如何使用数据库而非数组的in_array替代方法

时间:2011-12-25 22:52:55

标签: php mysql database

我有一组IP地址,我使用in_array拒绝以下代码中的人。

$deny = array("111.222.333.444","999.555.444.222");
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
header("location: http://google.com/");
exit();
}

是否有in_array使用数据库的替代方法。如果我有一个IP地址数据库,我如何检查数据库中的IP地址并使用标题重定向?

1 个答案:

答案 0 :(得分:1)

假设MySQLi:

$query = "SELECT count(*) AS denied
          FROM table_of_ips
          WHERE ip = '".mysqli_real_escape_string($link, $_SERVER['REMOTE_ADDR'])."'
          LIMIT 1";
$result = mysqli_fetch_assoc(mysqli_query($link, $query));

if ($result['denied']) {
  header("location: http://google.com/");
  exit;  
}

本质上,只需选择IP与客户端IP匹配的地方,如果得到结果,就会被拒绝。