登录时禁止系统的问题


Issue with banning system on login

当用户登录我的网站时,我创建了以下禁止系统。它会检查用户是否被封禁,然后按照一个流程收集信息,最后显示一个通知,不让用户登录。然而,这不会发生,我可以登录好。如有任何帮助,我将不胜感激。

    $un9 = "gdscei";
    $checkban = mysql_query("SELECT * FROM bans WHERE usr = '" .$un9. "'") or die(mysql_error());
        if(mysql_num_rows($checkban) != 0){
            $query7 = "SELECT * FROM bans WHERE usr = '".$un9."'";
    $result7 = mysql_query($query7) or die(mysql_error());
    while ($row7 = mysql_fetch_assoc($result7)) {
        $reas = $row7['reas'];
        $timeb = $row7['time'];
        $tban = $row7['tban'];
            $tip = $row7['ipd'];
    };
    if($timeb == "perm"){
        $bant = "Permanent";
    }else{
        $bant = $timeb;
    };
    $checkusrdel = mysql_query("SELECT * FROM users WHERE username = '".$un9."'") or die(mysql_error());
    if(mysql_num_rows($checkusrdel) != 0){
    $acdel = "n";
    }else{
    $acdel = "y";
    };
    if(empty($tip) && acdel == "n"){
    $bank = "account ban";
    }else if($acdel == "y" && empty($tip)){
    $bank = "account deleted";
    }else if($acdel == "y" && $tip){
    $bank = "account deleted + IP ban";
    }else{
    $bank = "account ban + IP ban";
    };
    $notice = '<script type="text/javascript">alert("You have been banned, as followed: "'.$bank.'". Your ban lasts until "'.$bant.'"."); window.open("login.php","_self");</script>';
    };

解决方案可能比您想象的要简单:

$notice = '<script type="text/javascript">alert("You have been banned, as followed: '.$bank.'. Your ban lasts until '.$bant.'."); window.open("login.php","_self");</script>';

简而言之,你不应该在JavaScript警告消息中使用两次括号。

添加:不要忘记在最后回显通知。PHP脚本的摘录没有显示任何类似的内容。如果您想在封禁检查后显示您的主页,只需使用die -函数输出消息,如果用户被封禁,则终止当前脚本。在您的示例中,只需在定义变量$notice之后添加以下内容:

die($notice);

你给用户提供了太多的信息,他们只需要知道他们被禁止了,而不是禁止的类型。

if (banned)
{
  ajax.display("Ban HAMMER!!");
}
else
{
  user.logon();
  redirect("location: home.php");
}