簡體   English   中英

Haxe / PHP服務器更改輸出而不編譯文件

[英]Haxe / PHP server changing output without compiling file

我正在Haxe中制作一個Web應用程序並將其編譯為PHP。 我在本地服務器( php -S )上測試PHP代碼。

這是代碼:

    //...
    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}

這就是真正怪異的部分開始的地方:當我更改代碼中的某些內容(它不必影響應用程序,甚至注釋也可以這樣做), 不構建它並重新加載頁面時,它突然起作用。 但是當我構建代碼時,它再次給出錯誤。

服務器中是否有錯誤或在某處出錯?


編輯

我將測試服務器移至Apache,問題仍然存在。

我發現了exists功能從StringMap類沒有被編譯到PHP由於某種原因,所以我編輯的代碼是這樣的:

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

現在就可以了。 不知道為什么當我不編譯文件時輸出會改變,但這沒關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM