Пишем систему бана по ip.
Часто владельцы более или менее крупных сайтов встречаются с “плохими юзерами”, с юзерами, которые так или иначе вредят нормальной работе системы. Таких юзеров нужно банить по ip. На этот раз я расскажу как сделать такую систему бана.
Для начало создадим файл с ip забаниных юзеров и причиной их бана. Этот файл должен иметь следующую структуру:
Ip юзера::причина бана.
И сохраним его – files/ban.login
Теперь начнем писать систему бана.
Открываем разными способами этот файд:
<?
if (file_exists(“files/ban.login”)){ $file = file(“files/ban.login”); }
else{$file = file(“./files/ban.login”);}
Теперь считаем кол-во банов:
for($i=0;$i<count($file);$i++)
Всё ок, теперь разбиваем все строки:
{
$q = explode(“::”, $file[$i]);
$banlogin = $q[0];
}
Проверяем, не забанин ли пользователь:
if (ereg(“^$banlogin$”,$login) || ereg(“^$banlogin$”,$login2) and $userr){
echo(“Вам закрыт доступ на сайт. Причина: “.$q[1]);}
else{
$file=implode(”,file(‘files/ban.ip’));
$ip=$_SERVER['REMOTE_ADDR'];
if (ereg($ip,$file)){
echo(“Вам закрыт доступ на сайт.”);}
else{?>
И контент:
Основной контент
<?
}
?>
Вот и всё, система бана по ip готова.
Использовались функции:
- count — Посчитать количество элементов массива или количество свойств объекта
- ereg — ищет со строгим регистром
- explode – Разбивает строку на подстроки
- implode — Объединяет элементы массива в строку
- file_exists — Проверить наличие указанного файла или каталога





Добавить комментарий
Вы должны войти