php Warning: mysql_real_escape_string hatası
merhabalar… yeni yapmaya çalıştığım oturum kontrol sistemim localde gayet güzel çalışırken sunucuma attığımda hata vermişti.
Komut:
$kullaniciadi = strip_tags(mysql_real_escape_string($_POST[‘kullaniciadi’]));
Hata mesajı da:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user ‘nobody’@’localhost’ (using password: NO) in /home/site/public_html/yonetim.php on line 56
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/site/public_html/yonetim.php on line 56
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user ‘nobody’@’localhost’ (using password: NO) in /home/site/public_html/yonetim.php on line 57
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/site/public_html/yonetim.php on line 57
Çözüm :
mysql_real_escape_string() komutunu mysql bağlantısı yapmadan kullanmaya çalışmışım. mysql bağlantı komutlarımı bu satırların öncesine çekince bir sorun kalmadı.
mysql_real_escape_string() nedir?
Bizi sql saldırılarından korumaya yarayan bir komuttur. Örneğin kullanıcı adı şifre sorgulayacağımız yerde aşağıdaki gibi bir sorgu kullanırız:
select * from oturum where kullaniciadi=’$kullaniciadi’ and sifre=’$sifre’
Şimdi adamın biri gelip kullancı adı ve şifreye rastgele bişiler yazdıktan sonra
or ‘1=1′ yazarsa ne olur ? bakalım:
select * from oturum where kullaniciadi=’$kullaniciadi’ and sifre=’$sifre’ or ‘1=1’
Sonuç 1 – 1 eşit olduğuna göre kullanıcı adı ve şifreyi bilmeye gerek kalmadan şifre atlanmış olur.