Вы можете создать массив запрещенных IP-адресов из файла (вы просто перезаписываете последний в своем коде, используйте $bannedip[]
, чтобы добавить его в список), а затем используйте in_array()
* 1004.* чтобы проверить IP пользователей по этому списку ...
$link_file = "bannedips.dat";
$lines = file($link_file);
$bannedip = []; // Create start array
foreach($lines as $line){
if(!empty($line)){
$line_array = explode(',', $line);
$bannedip[] = trim(trim(strip_tags($line_array[0]), "\x00..\x1F"));
}
}
if(in_array($IP, $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();
}
Может быть более аккуратный способ обработки входного файла, но, не зная формата, трудно сказать, поэтому я оставил вашкод, как это было.
Обновление:
Если вы заблокировали IP-файл, это просто список IP-адресов, вы можете заменить загрузку и foreach
на ...
$bannedip = file($link_file, FILE_IGNORE_NEW_LINES);
$bannedip = array_filter($bannedip);
Обновление 2: Поскольку вы, похоже, сами разобрались в этом, но опубликовали образец имеющегося у вас формата файла, подумал, что я добавлю, как это можно сделать...
$IP= "31.130.4.241";
$link_file = "bannedips.dat";
$bannedip = file($link_file, FILE_IGNORE_NEW_LINES);
$bannedip = array_map("str_getcsv", $bannedip);
$bannedip = array_column($bannedip, null, 0);
if(isset($bannedip[$IP])) {
$line = date('Y-m-d H:i:s') . " - <b>{$bannedip[$IP][0]}</b> - {$bannedip[$IP][1]} - {$bannedip[$IP][2]}<br>\n";
file_put_contents('403.shtml', $line . PHP_EOL, FILE_APPEND);
header('Location: 403.shtml');
die();
}