Anasayfa

Dersler -> Php -> Php ile Veritabanına Kayıt ve Göstermedeki Çift Tırnak , Tek Tırnak ve Slash Problemi

Taglar : StripSlash, AddSlash, magic quota, php.ini, ,

Php ile bir formdan veri gönderirken Eğer ki magic quotas ayarı on yani aktifse tırnak işaretine ters slaş eklemektedir.

bu özelliğin aktif liği php.ini de magic_quotes_gpc direktifinden kaynaklanmaktadır.

magic_quotes_gpc = On

şeklinde ifade açık ise get post request ve cookie değişkenlerine addslashes işlemini otomatik uygulamasıdır.

Bu yerine göre istenmeyen bir özellik durumundadir. Php 6 ile bu özellik tümden kaldırılacak. Yalnız php5 yada 4 sürümünde geliştirdiğimiz kodlarda doğal olarak bu özelliği göz ardı edemeyiz.

Sırası ile php sayfalarında şu işlemler yapılarak bu sorun kökten çözülebilir.

bu addslashes işlemini php bu değişkenlerin tüm elemanlarına uyguladığı için. matris ve türevi dizi oluşabileceginden bu işlemi tersine alan stripslashes işlemini array_map ile kullanmak en pratik çözümdür.

Adım adım çözüme geçecek olursak;

tüm sayfalarda kullandığınız ayarlar.php config.php yada lib.php gibi bir dosyaya ilk önce aşağıdaki fonksiyonu dahil ettikten sonra

//Strip slashes islemleri

if (get_magic_quotes_gpc()) {
    function stripslashes_deep($value)
    {
        $value = is_array($value) ?
                    array_map('stripslashes_deep', $value) :
                    stripslashes($value);

        return $value;
    }

    $_POST = array_map('stripslashes_deep', $_POST);
    $_GET = array_map('stripslashes_deep', $_GET);
    $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
    $_REQUEST = array_map('stripslashes_deep', $_REQUEST);

Bu kodu ekleyerek eğer ki magic quotas on ise slaşları geri almaktayız.

Ama veritabanına kayıt gerçekleşirken bu sefer formdan gelen veride yine tırnak gibi sakıncalı karakterler yer alabilir. İşte Kaydetme esnasinda problemden kurtulmak için ise mysql_real_escape_string ifadesini kullanabiliriz örnek olarak;

$result = mysql_query("insert into tablo (alan) values('".mysql_real_escape_string($deger)."')");

Böylelikle ömrünüz boyunca artik tek tırnak ve çift tırnak ile ilgili problem yaşamazsınız :)


Sitenize Aşağıdaki kodlari ekleyerek videoyu izletebilirsiniz
Bu Sayfayı İmleyebilirsiniz : Bookmark and Share
Videoya Henüz Yorum Yazılmamış
İlgili Dosya Bulunmamaktadır
Adınız, Soyadınız
Mail
Telefon
Adres
Referans
Sitede bulunan Tüm dökümanların izinsiz kopyalanması yasaktır. ProgramlamaTv.com 2008
Hizmet Sözleşmesi - Gizlilik İlkesi