• 22-04-2009, 13:12:18
    #1
    Her $_POST $_GET değişkenine htmlspecialchars ve addslashes eklemekten yorulduysanız. Uzun zamandır kullandığım bir fonksiyonu tanıtmak istiyorum.

    function filtre ($super_degisken) { 
      foreach ($super_degisken as $anahtar ) { 
        $yenilenmis[$anahtar] = addslashes(htmlspecialchars($super_degisken[$anahtar])); 
      } 
    }
    Kullanımı ise gayet basit;
     filtre($_POST); filtre($_GET);
    Yaptığınız zaman sayfadaki tüm gönderdiğiniz POST bilgilerini filtreden geçirir. Hepsine tek tek filtre yapmanıza gerek kalmaz böylece.
  • 22-04-2009, 14:26:19
    #2
    Üyeliği durduruldu
    şu baslikda soruna çözüm vermiştim

    https://www.r10.net/php/356709-php-ve...post1058497451

    get ve post değişkenleri iç içe dizi şeklinde olabilir. Bu durumda verdiginiz fonksiyonun rekürsif olarak calismasi gerekiyor.

    array map kullanımı için video ders hazirlamistim;

    http://php.programlama.tv/ders/php-a...ap-fonksiyonu/
  • 22-04-2009, 14:29:10
    #3
    İlk verdiğiniz linkteki olay Stripslashes ile \ ların kaldırmak üzerine diye gördüm. Bu fonksiyon tamamen filtreliyor sizinki filtrelenmiş verideki tırnakları kaldırıyor.

    Array_map video dersi linkini neden verdiniz onu anlamadım. Neyse bilmeyen arkadaşlara bilgi oldu.
  • 22-04-2009, 14:36:46
    #4
    Üyeliği durduruldu
    zampir adlı üyeden alıntı: mesajı görüntüle
    İlk verdiğiniz linkteki olay Stripslashes ile \ ların kaldırmak üzerine diye gördüm. Bu fonksiyon tamamen filtreliyor sizinki filtrelenmiş verideki tırnakları kaldırıyor.
    Array_map video dersi linkini neden verdiniz onu anlamadım. Neyse bilmeyen arkadaşlara bilgi oldu.
    hocam formdan gelen bilginin şöyle olduğunu düşünün;

    $_POST["adi"]["1"];
    $_POST["soyadi"]["1"];
    $_POST["adi"]["1"]["detay"];

    böyle bir dizi olarak gelirse foreach yapiniz stripslash diziye uygulanamayacak diye hata verecektir. bundan dolayı array map ile recürsif ( kendi kendini çağıran fonksiyon) şeklinde uygulamanız lazım.

    Birde magic quota on ise zaten addslashes otomayik yapilmis oluyor. fonksiyon bu şekilde olursa tekrar addslash yapmis olursunuz.
  • 22-04-2009, 14:40:22
    #5
    Onun çözümü basit ben magic_quot on kullanmadıgım için, nitekim php6 ilede kaldıralacağı için kontrolü unutmuşum.

    function filtre ($super_degisken) { 
      if ( get_magic_quotes_gpc() )
      {
    	  foreach ($super_degisken as $anahtar ) {  
    		$yenilenmis[$anahtar] = addslashes(htmlspecialchars($super_degisken[$anahtar]));  
    	  }  
      }
    }
  • 22-04-2009, 14:42:42
    #6
    Üyeliği durduruldu
    peki mesela post değişkeni şu şekildeyse

    $_POST["adi"]["1"];
    $_POST["soyadi"]["1"];
    $_POST["adi"]["1"]["detay"];

    hatta şu şekildeyse

    $_POST["adi"]["1"]["detay"]["a"]["b"]["c"]["d"];

    bu sorun ne olacak?

    direk stripslashes cannot apply to array virt zirt diye hata verir yazdığımız kod
  • 22-04-2009, 14:46:30
    #7
    sdemirkeser adlı üyeden alıntı: mesajı görüntüle
    peki mesela post değişkeni şu şekildeyse
    $_POST["adi"]["1"];
    $_POST["soyadi"]["1"];
    $_POST["adi"]["1"]["detay"];
    hatta şu şekildeyse
    $_POST["adi"]["1"]["detay"]["a"]["b"]["c"]["d"];
    bu sorun ne olacak?
    direk stripslashes cannot apply to array virt zirt diye hata verir yazdığımız kod
    form'dan veya GET ile bana öyle bir veri gönderme methodu söyleyebilir misin.

    $_POST['ali']['veli']['1]= 'naber';

    gibi değilde direk <input ile öyle bi veri tipi söyleyebilirseniz bi çaresine bakarız
  • 22-04-2009, 14:51:10
    #8
    Üyeliği durduruldu
    mesela çok kullandigim bir durum panelden toplu giriş ekranı. on tane isim yazip kaydet diyebiliyor;

    Tabi burda 10 dedim ama bunun bir sınırı olmayabilir. 100 tane de olabilir bir döngü daihlinde
    <form>
    <input type="text" name="adi[]" />
    <input type="text" name="adi[]" />
    <input type="text" name="adi[]" />
    <input type="text" name="adi[]" />
    <input type="text" name="adi[]" />
    <input type="text" name="adi[]" />
    <input type="text" name="adi[]" />
    <input type="text" name="adi[]" />
    <input type="text" name="adi[]" />
    <input type="text" name="adi[]" />
    <input type="submit" value="Kaydet">
    </form>
    Toplu girdigi için dizi şeklinde işleyebilmek için formdada bu şekilde dizi oluşturuyorum.

    get ve post dizi olduğu için yerine göre matris yerine göre derinliğinin sınırı olmayan bir dizi şeklindede gelebilir.