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