0

很抱歉打扰你,但我花了几个小时浏览互联网来寻找我的问题的答案,我搜索了谷歌,甚至问过雅虎的答案,但我找不到我的问题的解决方案。

我有一个数据库,在该数据库中有一个名为 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>";
}

在脚本的前面建立了与数据库的连接,因此这不是问题。任何帮助表示赞赏。拜托,谁能找到答案。

4

3 回答 3

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。

于 2013-09-25T18:06:08.313 回答
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>";
}
于 2013-09-25T18:06:19.710 回答
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>";

    }
}
于 2013-09-25T18:18:33.920 回答