Güvenliğiniz için verilerinizi filtrelerken sadece php.ini deki magic_quotes_gpc ayarına güveniyorsanız güvendiğiniz sistemlere hackerlar, lamerlar doluşabilir. Şöyle ki; PHP 5.2.7 sürümünde bu yapılandırma "on" değerinde olsa dahi ' karakterine \ koymuyor. Yani siz verilerinizi güvenle filtrelediğini düşünürken aslında o veriler veritabanınıza tehlikeli biçimde kayıt ediliyor. Detaylı bilgi
Bu sorundan sonra php.net'te de magic_quotes_gpc sayfasında da bu ayara güvenilmemesi ve kullanılmaması gerektiği yazıyor. Verileri filtrelemek için kullanacağınız daha faydalı ve güvenli fonksiyonlar bulunmaktadır :
addslashes()
Bu fonksiyon magic_quotes_gpc değeri on olduğunda otomatik çalışıyor-du. Yukarıda bahsedilen sorundan sonra bu fonksiyonu elle çağırmak daha mantıklı gibi duruyor.
Örnek :
$veri =addslashes($_POST['veri']);
strip_tags()
Bu fonksiyon değişken içindeki html kodlarını tamamiyle temizler. Ek bir parametre ile istediğiniz html kodlarına tölerans tanıyabilirsiniz.
Örnek :
$veri= ' <u>Altı çizili</u><b>Kalın yazı</b><a href="http://www.sametozden.com">Bağlantı</a> ' ;
$veri= strip_tags("$veri", "<u><b>");
print $veri ;
// Altı çiziliKalın yazıBağlantı
htmlspecialchars()
Bu fonksiyonun strip_tags dan farkı html karakterlerini tamamiyle temizlemek yerine onları düz bir yazı haline çevirir.
Örnek :
$veri= ' <u>Altı çizili</u><b>Kalın yazı</b><a href="http://www.sametozden.com">Bağlantı</a> ' ;
$veri= strip_tags("$veri", "<u><b>");
print $veri ;
// <u>Altı çizili</u><b>Kalın yazı</b><a href="http://www.sametozden.com">Bağlantı</a>