Haxe / PHP сервер меняет вывод без компиляции файла - PullRequest
0 голосов
/ 13 сентября 2018

Я делаю веб-приложение на Haxe и компилирую его в PHP. Я тестирую код PHP на моем локальном сервере (php -S).

Вот код:

    //...
    switch(page) {
        //...
        case "user":
            //if logged in, display profile; if not, redirect to login

            var loggedIn = false;

            //check if user is logged in
            if (Session.exists("username") && Session.exists("password")) {
                var username:String = Session.get("username");
                var password:String = Session.get("password");

                //check the password
                var conn = Mysql.connect({user: "..." pass: "...", host: "127.0.0.1", database: "..."});
                var dbpass = conn.request("SELECT password FROM users WHERE username = \'" + username + "\';").results().first().password;

                if (password == dbpass)
                    loggedIn = true;
            }

            if (!loggedIn) {
                returnPage += File.getContent("../html/login.html");
            } else {
                //TODO add profile page
            }
    }

Сервер выдает эту ошибку (без ошибок при компиляции):

uncaught exception: Unable to call <exists>

in file: /.../lib/haxe/ds/StringMap.class.php line 31
#0 /.../lib/Open.class.php(9): haxe_ds_StringMap->__call('exists', Array)
#1 /.../open/index.php(11): Open::main()
#2 {main}

И вот тут начинается действительно странная часть: когда я что-то изменяю в коде (это не должно влиять на приложение, даже комментарий), не создает его и перезагрузите страницу, она вдруг работает. Но когда я строю код, он снова выдает ошибку.

Это какая-то ошибка на сервере или я где-то ошибаюсь?


EDIT

Я переместил тестовый сервер на Apache, и проблема все еще сохраняется.

1 Ответ

0 голосов
/ 18 сентября 2018

Я обнаружил, что функция exists из класса StringMap по какой-то причине не скомпилирована в PHP, поэтому я отредактировал код так:

//...
if (Session.get("username") != null && Session.get("password") != null) {

и этоработает сейчас.Не знаю, почему вывод изменился, когда я не скомпилировал файл, но это не имеет значения.

...