Просмотр полной версии : Нужен Скрипт для бана ip
combatsxx
18.11.2007, 17:45
//del ;)
Nightmarе
18.11.2007, 17:54
Нужен Скрипт (Пхп) для автоматического бана Айпи
Через куки или через mysql
ато уже заипали флудом на сайт отчетами от Ксинча..
Приходит много логов я их удаляю ано потом опять запускают трой и опять идут логи..
Советую лучше банить через .htaccess там всего то строчку добавляешь:
Deny from 192.168.1.1
Или например чтобы забанить всю подсеть, то вот так:
Deny from 192.168
Вот соббстно и всё.
combatsxx
18.11.2007, 18:05
//del ;)
выкладывали не так давно
http://forum.antichat.ru/thread53477.html
combatsxx
18.11.2007, 18:11
>Антох тот топ читал..
невыходит что-то
combatsxx
18.11.2007, 18:11
//del ;)
.:EnoT:.
19.11.2007, 15:04
Нужен Скрипт (Пхп) для автоматического бана Айпи
Через куки или через mysql
Не совсем понял что значит для автоматического бана.
Если ты имеешь ввиду что ты вносишь ip в блэк и соответственно юзера не пускает на страницу, то можно это осуществить с Mysql.
Я бы сделал примерно так:
Создал бы таблицу в БД (например ipban) с полем ip
CREATE TABLE `ipban` (
`id` int NOT NULL auto_increment,
`ip` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Заносить ip-шники примерно так:
ban.php
<?php
//Получаем IP
if(getenv('HTTP_X_FORWARDED_FOR'))
{$ip = getenv('HTTP_X_FORWARDED_FOR');}
elseif(getenv('REMOTE_ADDR'))
{$ip = getenv('REMOTE_ADDR');}
//Соединяемся с БД
$host = "localhost";
$user = "";
$pass = "";
$db = "";
$connect = @mysql_connect("$host", "$user","$pass");
@mysql_select_db("$db", $connect);
//Выводим форму
if($_POST['ips'] == null)
{echo"
<form action method='post'>
<input type='name' name='ips'>
<input type='submit' value='Забанить'>
</form>";
}
else{
$ips = htmlspecialchars($_POST['ips']);
//Делаем запрос на добавлние IP в блэк
$query = "INSERT INTO `ipban` VALUES(NULL, '$ips')";
$result = @mysql_query($query);
if(!$result) {echo"Ошибка!";}
else{echo"IP $ips забанен!";}
}
?>
Файл проверки ip на наличие бана
chek.php
<?php
//Получаем IP
if(getenv('HTTP_X_FORWARDED_FOR'))
{$ip = getenv('HTTP_X_FORWARDED_FOR');}
elseif(getenv('REMOTE_ADDR'))
{$ip = getenv('REMOTE_ADDR');}
//Соединяемся с БД
$host = "localhost";
$user = "";
$pass = "";
$db = "";
$connect = @mysql_connect("$host", "$user","$pass");
@mysql_select_db("$db", $connect);
//Сравниваем с ip-шниками в БД
$query = "SELECT * FROM `ipban` WHERE `ip` = '$ip'";
$result = @mysql_query($query);
if(@mysql_num_rows($result) > 0 )
{echo"Вы забанены!";}
else{echo"Вы не забанены!";}
?>
Короче бан по такому принципу мона сделать. За ошибки и извращенство в коде просьба не пинать, тока учу php :)
combatsxx
21.11.2007, 08:01
(непроканало
<?php
$ipLog='ipLogFile.txt'; // Your logfiles name here
$timeout='24'; // How many hours to block IP
$goHere='Allowed.html'; // Allowed pages name here
function record($REMOTE_ADDR,$ipLog,$goHere)
{
$log=fopen("$ipLog", "a+");
fputs ($log,$REMOTE_ADDR."][".time()."\n");
fclose($log);
Header ("Location: $goHere"); exit(0);
}
function check($REMOTE_ADDR,$ipLog,$timeout)
{
global $valid; $ip=$REMOTE_ADDR;
$data=file("$ipLog"); $now=time();
foreach ($data as $record)
{
$subdata=explode("][",$record);
if ($now < ($subdata[1]+3600*$timeout) && $ip == $subdata[0])
{
$valid=0; echo "You have been banned from accessing this page. Try again in $timeout hours.";
break;
}
}
}
check($REMOTE_ADDR,$ipLog,$timeout);
if ($valid!="0") record($REMOTE_ADDR,$ipLog,$goHere);
?>
.:EnoT:.
21.11.2007, 13:38
(непроканало
Подправил скрипт, потестил, всё работает. Вот тебе и основа, дальше сам доработаешь если нужно :)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot