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.

Yazar: Mustafa Şadoğlu

Mustafa sitemizde 103 yazı eklemiş...

Share
  • teşekkürler bende mysql bağlantısı yapmadığım için bu hatayı veriyormuş

  • barış

    Gerçekten işime yaradı bilgi için teşekkür ederim

  • Mehmet

    Çözemedim ama neyse yinede ilgilendiğiniz için teşekkür ederim.

  • @Mehmet
    mysql bağlantı komutu mysql_real_escape_string komutundan önce kullanılmalıdır…
    sırasına dikkat edin… şimdilik diyebileceklerim bunlar…
    iyi günler

  • Mehmet

    Cevap için teşekkürler.
    Yalnız o komuttan dolayı kaynaklanmıyormuş. Bütün dosyaları tek tek açarak kontrol ettim hiç birinde geçmiyor.

    Database bilgileri doğru ki zaten doğru olmasa kurulumu geçemezdim. Config dosyalarındada ayarlar doğru hala problemi anlamış değilim.

    Server ile ilgili bir düzenleme vb. şeylerden dolayı olabilir mi? Linux sunucum var.

  • @Mehmet
    aslında sorunuzun içinde cevap gizli… mysql_real_escape_string komutunun ctrl-f ile arattırıp bulacaksınız…. ancak o satırı silmek; hacklenmek gibi başka problemlere sebep olabilir…. o yüzden ilk önce veritabanına bağlantı gerçekleş mi? diye kontrol etmelisiniz… bence sorununuzun cevabı bağlantı hatasında yatıyor…
    Allaha emanet

  • Mehmet

    Merhaba.
    Bir web sayfamda üstteki gibi bir problem mevcut. Yalnız php bilgim yok dolayısıyla çözümü yapamadım.

    Yardımcı olurmusunuz?
    mysql_real_escape_string() bu kod nerede geçer, nasıl yapabiliriz?
    Şimdiden çok teşekkürler.