20 Aralık 2013 Cuma

PHP Tırnak Hatası, Mysql Tırnak Sorunu Hakkında

Bu Yazım da Php ile ilgili bazan yaşadığınız bir problem olan çift tırnak yada tek tırnak sorunu neden kaynaklanır, nasıl giderilir,

Mysql veri kaydetme esnasında yaşadığınız bu sorun aslına bakarsanız size bir uyarıdır :) nasıl bir uyarı diyecek olursanız, bu konuya geçmezden evvel sql query hakkında biraz incelemede bulunalım,

"select * from tablo where sutun='deger' order by id desc"

var olan query  bu şekilde varsayarsak deger değişkeni içersinde bir çift tırnak veya tek tırnak olduğunu varsayalım. degerin "merhaba" olduğunu düşünelim

"select * from tablo where sutun='"merhaba" order by id desc"

"select * from tablo where sutun='" query sutunu iki operatör arasını kapsar, o nedenle deger içersinde çift tırnak olduğu zaman query bu şekil bir hal alacaktır. Bu aslında bir SQL injection açığıdır. yani query nize dışardan bir müdahale sözkonusudur. mysql_real_escape_string yada addslashes fonksiyonundan geçirerek değişkeni o şekilde query ye dahil etmeniz gerekir,

$deger = addslashes($_POST['deger]);

gibi yada

$deger = mysql_real_escape_string($_POST['deger]);

Diğer bir konu tırnak sorunu sunucuda maqic_quotes aktif olmadığı zamanlarda meydana gelir şayet sunucu sahibi iseniz, php.ini editlyerek magic_quotes değerini on yapabilirsiniz.

Hiç yorum yok:

Yorum Gönder