我试图制作一个基于ip的拒绝列表,它在mysql中存储了ip号码。基本上我尝试头重定向如果用户的IP在数组但它不会工作。有什么问题?
$ip_array = array();
$ip_ban_query = mysql_query("SELECT ip FROM banned_ips");
while ($deny = mysql_fetch_assoc($ip_ban_query)){
$add_ip = $deny['ip'];
$ip_array[] = $add_ip;
}
if (in_array ($_SERVER['REMOTE_ADDR'], $ip_array)) {
header("Location: http://www.google.com/");
exit();
}
答案 0 :(得分:1)
我们可以在这里大大简化您的代码。降低复杂性几乎总能消除错误。 :)
// There are several different methods to accomplish this, and you really
// should be using statements here, but both are out of scope of this question.
$ipBanQuery = sprintf("SELECT ip FROM banned_ips WHERE ip = '%s'", mysql_real_escape_string($_SERVER['REMOTE_ADDR']));
$result = mysql_query($ipBanQuery);
if (mysql_num_rows($result)) {
header('Location: http://www.google.com/');
exit();
}
它还取决于您调用此代码的位置。请确保在输出到浏览器之前调用它 - 杂散空格,HTML或其他调试信息将阻止发送任何其他标头。检查您的网络服务器的错误日志,看看是否有令人讨厌的事情发生。