php标题位置不会工作

时间:2012-03-08 02:10:51

标签: php mysql arrays http-headers

我试图制作一个基于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();

}

1 个答案:

答案 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或其他调试信息将阻止发送任何其他标头。检查您的网络服务器的错误日志,看看是否有令人讨厌的事情发生。