很抱歉打扰你,但我花了几个小时浏览互联网以获得我的问题的答案,我搜索了谷歌,甚至询问了雅虎的答案,但我找不到解决问题的方法。
我有一个数据库,并且在该数据库中是一个名为active的列,它默认为0.在PHP中我想检查一个人是否登录,如果该帐户中的帐户中有0则如果是我将用户登录,但如果没有,则会显示一条错误消息,说明他们的帐户已被禁止。无论始终出现什么信息,问题都在于:
Your account has been banned, if you think this is in error email: admin@website.com.
以下是导致问题的代码部分:
$active = mysql_query("SELECT active FROM users WHERE username='$username'");
if (mysql_num_rows($active) == 0)
{
session_start();
$_SESSION['username'] = $username;
echo "You've been logged in. <a href='http://techhelpandhowtos.tk'>Home</a>";
}
else
{
echo "<font color=Red>Your account has been banned, if you think this is in error email: admin@website.com</font>";
}
先前在脚本中建立了与数据库的连接,这不是问题所在。任何帮助表示赞赏。请,任何人都可以找到答案。
答案 0 :(得分:1)
只要您的用户存在(并且他的用户名是uniqe),mysql_num_rows将始终返回1.
像这样使用mysql_fetch_array:
$active = mysql_query("SELECT active FROM users WHERE username='$username'");
$res = mysql_fetch_array($active);
if($res["active"] === "1")
...
我还应该提一下,你不应该为新代码使用mysql扩展,因为它目前已被弃用,将来会被删除。请改用PDO或mysqli。
答案 1 :(得分:0)
您正在检查是否有匹配的记录,而不是它们是否有效。下面的代码将选择与用户名匹配的用户,并检查它们是否被禁止。
$active = mysql_query("SELECT active FROM users WHERE username='$username'");
$row = mysql_fetch_assoc($active);
if (isset($row['active']) && $row['active'] == 1)
{
session_start();
$_SESSION['username'] = $username;
echo "You've been logged in. <a href='http://techhelpandhowtos.tk'>Home</a>";
}
else
{
echo "<font color=Red>Your account has been banned, if you think this is in error email: admin@website.com</font>";
}
答案 2 :(得分:0)
我认为这应该可以解决你的问题
if (mysql_num_rows($active) == 1)
{
$result = mysql_result($active,0,'active');
if($result == 0)
{
session_start();
$_SESSION['username'] = $username;
echo "You've been logged in. <a href='http://techhelpandhowtos.tk'>Home</a>";
}else
{
echo "<font color=Red>Your account has been banned, if you think this is in error email: admin@website.com</font>";
}
}