第一种方式,将所有 ip 放在一个文件中,用换行符分隔。然后,您将执行以下操作:
$ips = file("ips.txt", FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
if (in_array($hostname, $ips) || (in_array($ipz, $ips)) {
// redirect to some content for banned guyz
die();
}
// real things
如果您需要有关 file() 标志的更多信息,可以阅读此.
出于安全原因,您可以将“ips.txt”文件放在外部无法访问的文件夹中。
第二种方式,你有一个存储所有 ips 的 sql 表:
require_once("config.php");
$dbh = new PDO("mysql:host={$host};dbname={$base}", $user, $password);
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$ipz = $_SERVER['REMOTE_ADDR'];
$sth = $dbh->prepare("select count(*) from banned_ips where ip IN (?, ?)");
$sth->execute(array($hostname, $ipz));
$count = $sth->fetchColumn();
if ($count > 0) {
// do some stuffs with banned user
die();
}
// do some stuffs with normal users