Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Нужен Скрипт для бана ip (https://forum.antichat.xyz/showthread.php?t=53842)

combatsxx 18.11.2007 17:45

Нужен Скрипт для бана ip
 
//del ;)

Nightmarе 18.11.2007 17:54

Цитата:

Сообщение от combatsxx
Нужен Скрипт (Пхп) для автоматического бана Айпи
Через куки или через mysql
ато уже заипали флудом на сайт отчетами от Ксинча..
Приходит много логов я их удаляю ано потом опять запускают трой и опять идут логи..

Советую лучше банить через .htaccess там всего то строчку добавляешь:
Deny from 192.168.1.1

Или например чтобы забанить всю подсеть, то вот так:
Deny from 192.168

Вот соббстно и всё.

combatsxx 18.11.2007 18:05

//del ;)

ant0ha 18.11.2007 18:09

выкладывали не так давно
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

Цитата:

Сообщение от combatsxx
Нужен Скрипт (Пхп) для автоматического бана Айпи
Через куки или через mysql

Не совсем понял что значит для автоматического бана.
Если ты имеешь ввиду что ты вносишь ip в блэк и соответственно юзера не пускает на страницу, то можно это осуществить с Mysql.
Я бы сделал примерно так:
Создал бы таблицу в БД (например ipban) с полем ip
PHP код:

CREATE TABLE `ipban` (
`
idint NOT NULL auto_increment,
`
iptext NOT NULL,
PRIMARY KEY  (`id`)
ENGINE=MyISAM DEFAULT CHARSET=cp1251

Заносить ip-шники примерно так:
ban.php
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 код:

<?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) > )
{echo
"Вы забанены!";}
else{echo
"Вы не забанены!";}
?>

Короче бан по такому принципу мона сделать. За ошибки и извращенство в коде просьба не пинать, тока учу php :)

combatsxx 21.11.2007 08:01

(непроканало

Хозяин 21.11.2007 08:33

PHP код:

<?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

Цитата:

Сообщение от combatsxx
(непроканало

Подправил скрипт, потестил, всё работает. Вот тебе и основа, дальше сам доработаешь если нужно :)


Время: 04:09