2009-02-16 2 views
0

"Я использую флэш-as3, PHP и MySQL"Mysql Реальный побег Строка и нормальная строка

В чем разница между:

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

и

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

Я отправка и извлечение переменных из Flash AS3 в php и обратно в AS3. Первый (без mysql_real_escape_string) работает отлично. Но позже появляется ошибка во вспышке. Сообщение об ошибке: «Текст параметра должен быть не пустым».

Я попробовал «эхо» (отображение), оба результата, результаты одинаковы. Очень странно. У кого-нибудь есть идея?

ответ

3

Помните, что mysql_real_escape_string() требует правильного подключения к базе данных; если вы вызываете его перед использованием mysql_connect, он не будет иметь желаемого эффекта.

2

Вам нужно только mysql_real_escape_string, если вы хотите использовать строку в запросе, который затем выполняется функцией mysql_query. Кроме того, вам просто нужна эта функция, если вы не можете гарантировать, что эта строка не содержит определенных символов, которые могут нарушить целостность запрошенного вами запроса.

+0

Мне нужно использовать mysql_query, потому что я сравниваю переменные с табличным значением моих пользователей, если оно соответствует, а затем регистрируется. – roa3

+0

Но вам просто нужно это для MySQL-запросов и ни для чего другого. Если вы хотите использовать одно и то же значение в другом контексте, вам, вероятно, понадобятся другие функции. Например. для HTML вы должны использовать htmlspecialchars() с ENT_QUOTES. – Gumbo

0

Первая форма будет делать именно то, что вы думаете: получите представленные значения и MD5 в свои переменные.

Вторая форма также избежит любых «опасных» символов, если таковые имеются. Попробуйте это с именем пользователя, содержащим кавычки, и вы его получите.

2

Чтобы было понятнее, что другие ответы correcty состояние:

I может быть хорошо использовать первый вариант, если вы хотите передать эту переменную блеснуть. Нельзя использовать вашу первую версию, если вы хотите использовать эту переменную в запросе базы данных.

Значение:

OK

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

NOT OK

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

Я предполагаю, что вы первый авторизовать пользователя, а затем передавать данные во флэш-память. Если это так, проблема не возникает. Правильно?

2

Сообщения об ошибках помогут вам. Читай их.

Сообщение об ошибке: «Текст параметра должен быть не нулевым».

Это, казалось бы, указывают, что либо ваше имя пользователя или пароль строка является нулевым (пустым) и mysql_real_escape_string или (более вероятно) ваш md5 функция отказывается принимать нулевые строки в качестве входных данных. Сначала проверьте нулевую строку, и все должно быть хорошо.

Кроме того, хеши MD5 содержат только буквенно-цифровые символы, все из которых безопасны в любом месте. Вам не нужно передавать их через mysql_real_escape_string, потому что процесс хеширования уже подвергнется дезинфекции ввода.

Смежные вопросы