2013-12-17 113 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?