这是我在这个伟大网页中的第一个主题
问题在于:
我正在编写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 :(得分:3)
if($num != 0)
更改为:
if($num == 0)
答案 1 :(得分: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? 强>