Gerçek Escape String ve normal bir dize mysql

5 Cevap php

"I am using flash as3, php ve mysql"

Arasındaki fark nedir:

$username =      $_POST['username'];
$password = md5( $_POST['password']);

ve

$username = mysql_real_escape_string(     $_POST['username']);
$password = mysql_real_escape_string(md5( $_POST['password']));

I am sending ve retrieving variables from flash AS3 to php ve back to AS3 again. The former one (without mysql_real_escape_string) works fine. But the later one gets an error in flash. The error message is: "Parameter text must be non-null."

I (ekran) hem sonuç "echo" denedim, sonuç aynıdır. Çok garip .. Herkes herhangi bir fikrin var mı?

5 Cevap

() Düzgün çalışması için açık bir veritabanı bağlantısı ihtiyacı olduğunu mysql_real_escape_string Unutmayın; Eğer mysql_connect kullanmadan önce diyorlar, eğer istenen etkisi olmaz.

Eğer mysql_query fonksiyonu tarafından yürütülen bir sorguda bir dize kullanmak istiyorsanız sadece mysql_real_escape_string gerekir. Bu dize amaçlanan sorgu bütünlüğünü ihlal edebilirsiniz bazı karakterler içermediğinden emin olamaz eğer Ve ayrıca sadece bu işlev gerekir.

Ne diğer cevapları correcty devlet, net yapmak için:

I may be fine to use your first version, if you want to pass this variable to flash. It WON'T be ok to use your first version, if you want to use this variable in a database query.

Anlamı:

OK

<param name="FlashVars" 
value="vGetData=./your/path/yourData.php?params=<?php echo $username; ?>" />

NOT OK

$query = "SELECT something FROM users WHERE username=".$username;

Ben ilk önce kullanıcı yetki ve ardından flaş veri göndermek varsayalım. Eğer öyleyse, bir sorun görünmüyor. Değil mi?

Hata mesajları size yardımcı olmak için vardır. Onları okuyun.

The error message is: "Parameter text must be non-null."

Bu, adınızı ya da parola dize ya (boş) null ve mysql_real_escape_string veya (daha büyük olasılıkla) ve md5 fonksiyonu girdi olarak boş dizeleri kabul etmiyor belirtmek gibi görünüyor. Boş bir dize için test ilk ve ince olmalıdır.

Ayrıca, MD5 sağlamalarının hemen hemen her yerde kullanımı güvenlidir bütün bunlar sadece alfanümerik karakterler içerebilir. Sen karma işlemi zaten giriş ayıklanmış olacak, çünkü mysql_real_escape_string ile onları geçmek gerekmez.

Ilk form tam olarak ne düşündüğünüzü yapacak: senin değişkenleri içine gönderilen değerleri ve MD5 olsun.

Eğer varsa, ikinci biçimi de herhangi bir "tehlikeli" karakterleri kaçış olacaktır. Tırnak içeren bir kullanıcı adı ile deneyin ve bunu alacak.