#php #actionscript-3
#php #actionscript-3
Вопрос:
Я создал php и as3-код для интерфейса входа на веб-сайт. Вот PHP-код:
<?php
$con = mysql_connect("xxx", "xxx", "xxx");
mysql_query($con);
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("xxx", $con) or die('no02');
$username = $_POST['username'];
$pass = md5($_POST['pass']);
if ($_POST['systemCall'] == "checkLogin") {
$select = "SELECT username FROM connexion WHERE username='$username' AND pass='$pass'";
$query = mysql_query($select);
$counter = 1;
while ($row = mysql_fetch_array($query)) {
$name = $row['username'];
if ($name == "joe") {
print "systemResult=joe";
}
$counter = $counter 1;
}
}
mysql_close($con);
?>
Вот код AS3 :
function dataOnLoad(e: Event) //after pressing submit button
{
status1.selectable = false;
status1.text = e.target.data.systemResult
status1.autoSize = TextFieldAutoSize.LEFT;
if (e.target.data.systemResult == "joe") {
MovieClip(root).gotoAndStop(3);
} else {
status2.text = "Doesn't work";
}
}
Теперь, каждый раз, когда я нажимаю кнопку отправки с правильным именем пользователя и паролем, я получаю право на e.target.data.systemResult
into status1.text
, но я не могу понять, почему if
оператор не признает равенство между e.target.data.systemResult
и joe
. Он всегда пишет «Не работает» в status2.text
.
Комментарии:
1. Убедитесь, что после него нет пробелов
?>
. Вы можете удалить?>
, это необязательно.2. В первую очередь вам следует прочитать о SQL-инъекции .
3. Вы уверены, что значение не «Joe» или «ДЖО»?
4. В следующий раз сделайте правильный отступ в коде. Для вашего же блага вы не сможете прочитать свой код при возрастающей сложности.
Ответ №1:
Я довольно давно не играл в as3, но, основываясь на описании вашей проблемы, я бы предположил, что systemResult — это тип объекта, по которому строгое сравнение может не привести к совпадению. Существует ли метод toString(), который вы могли бы применить к systemResult, чтобы посмотреть, изменит ли это ваши результаты сравнения?
Ответ №2:
Попробуйте использовать переменные url:
function dataLoaded(e:Event)
{
var phpvars:URLVariables = new URLVariables(e.target.data);
if (phpvars.systemResult == "joe")
{
status2.text = "Works!";
}
}
и установите формат данных вашего загрузчика php:
phploader.dataFormat = URLLoaderDataFormat.VARIABLES;
Комментарии:
1. Вы могли бы попытаться отследить phpvars и phpvars.systemResult и посмотреть, каковы их выходные данные.