2013-12-17 150 views
-2

這是我的第一個主題在這個偉大的網頁如果語句工作不正常

問題到目前爲止是這樣的:

我腳本的UCP(PHP MySQL的&爲基礎)。我希望它顯示用戶的狀態,如分數,金錢等(是的,這是一款遊戲),但是當我點擊登錄按鈕時,沒有任何反應,它只是刪除請求字段的內容。

它正常工作之前,我做了一些修改(檢查用戶名的合法性)

下面的代碼:

if (isset($_POST['login'])) 
{ 
    $hashedpass = hash('whirlpool', $password); 
    $query = "SELECT * FROM users WHERE Username = '$playername' AND Password = '$hashedpass'"; 
    $result = mysql_query($query); 

    $num = mysql_num_rows($result); 
    mysql_close(); 
    if($num != 0) 
    { 
     echo"Account doesn't exist!"; 
     header("Location: ucp.html"); 
    } 
    else 
    { 

     $name=mysql_result($result,$i,"UserName"); 

     $money=mysql_result($result,$i,"Money"); 

     $score=mysql_result($result,$i,"Score"); 

     $wantedlevel=mysql_result($result,$i,"WantedLevel"); 

     $adminlevel=mysql_result($result,$i,"AdminLevel"); 


     echo "<b>$name</b><br>Money: $money<br>Score: $score<br>Wanted Level: $wantedlevel<br>Admin Level: $adminlevel<br><br>";   

    } 
} 
else if (isset($_POST['register'])) 
{ 
    header("Location: register.html"); 
} 
else 
{ 
    header("Location: index.html"); 
} 
+0

檢查你的查詢的返回值 - 什麼都顯示在'mysql_error()'? – andrewsi

+2

'或死(​​mysql_error());'是有用的東西添加到您的腳本。開發期間 – Sir

+0

($ num!= 0)表示帳戶確實存在,對不對? – Andrew

回答

3
if($num != 0) 

變化:

if($num == 0) 
1

這只是在這裏不起作用,也不合邏輯:

$num = mysql_num_rows($result); 
mysql_close(); 
if($num != 0) 
{ 
    echo"Account doesn't exist!"; 
    header("Location: ucp.html"); 
} 

首先邏輯錯誤,如果$num不等於0,那麼你的查詢必須至少找到一個帳戶。所以,你需要你的if語句改爲:

if($num == 0){ //if 0 rows were found - the account was not found thus it doesn't exist 
    echo "Account doesn't exist!"; 
} 

還要注意我沒加header("location: ucp.html");。您無法顯示輸出並將用戶重定位到其他頁面。你要麼做一個或另一個,否則你會得到一個錯誤/警告。

最後檢查你的MySQL不會導致錯誤通過在結束與添加一個檢查:

$result = mysql_query($query) or die(mysql_error());

最後的技巧,你應該避免使用mysql_*並考慮mysqli_* or PDO最好的解釋在這裏: Why shouldn't I use mysql_* functions in PHP?