[英]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.