【发布时间】:2018-06-07 09:52:24
【问题描述】:
我正在尝试编写一个简单的 PHP 通用块包含代码,该代码将读取文本文件以填充 IP 数组,然后使用该数组比较访问者 IP 以确定它是否应该结束页面显示, 阻止该网页或网站。此代码还将日志行放入 403 文件,然后发送失败者(用户)查看它,结束他们对该站点的访问。该行将他们的信息附加到开放式 403 文件的末尾。
包含可以放在您不希望该 IP 列表看到的任何位置。问题是我是一个无可救药的黑客,对这些循环和语法没有很好的掌握。你能帮我解决这个问题吗?似乎可以读取 IP 列表,但是 while 循环似乎是错误的。我可以进一步简化这一点。但我不确定问题是什么..我选择的变量名...也许吧。
<?
$IP = $_SERVER['REMOTE_ADDR'];
$link_file = "bannedips.dat";
$lines = file($link_file);
foreach($lines as $line){
if(!empty($line)){
$line_array = explode(',', $line);
$bannedip = trim(trim(strip_tags($line_array[0]), "\x00..\x1F"));
}
}
while $bannedip if ((substr($IP,0,10) == $bannedip) {
$line = date('Y-m-d H:i:s') . " - <b>$IP</b><br>\n";
file_put_contents('403.shtml', $line . PHP_EOL, FILE_APPEND);
header('Location: 403.shtml');
die();
}
?>
【问题讨论】:
-
有任何理由在 PHP 中这样做,而不仅仅是在您的防火墙或 Web 服务器设置中?
-
您不需要放入while循环,您可以简单地将这些ips从文件中放入数组中,然后查找访问者ip是否存在于数组中......简单!!!!跨度>
-
我有另一个页面用于创建 IP 列表,因为我从这些 IP 中删除了放置的内容。这就是我想看到的,在数组中找到 ip 的代码。我们是在谈论使用像'if(in_array')这样简单的东西吗
标签: php while-loop ip-blocking