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.
0 yorum:
Yorum Gönder