PHP -> оператор AS3 if

#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 и посмотреть, каковы их выходные данные.