-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");
}
4

2 回答 2

3
if($num != 0)

改成:

if($num == 0)
于 2013-12-17T03:33:26.197 回答
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在此处查看最佳解释: 为什么我不应该在 PHP 中使用 mysql_* 函数?

于 2013-12-17T03:36:05.307 回答