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

Discussion in 'PHP' started by combatsxx, 18 Nov 2007.

  1. combatsxx

    combatsxx Member

    Joined:
    19 Oct 2007
    Messages:
    0
    Likes Received:
    69
    Reputations:
    -16
    //del ;)
     
    #1 combatsxx, 18 Nov 2007
    Last edited: 20 Aug 2009
  2. combatsxx

    combatsxx Member

    Joined:
    19 Oct 2007
    Messages:
    0
    Likes Received:
    69
    Reputations:
    -16
    //del ;)
     
    #2 combatsxx, 18 Nov 2007
    Last edited: 20 Aug 2009
  3. ant0ha

    ant0ha Elder - Старейшина

    Joined:
    22 May 2007
    Messages:
    130
    Likes Received:
    50
    Reputations:
    13
    выкладывали не так давно
    http://forum.antichat.ru/thread53477.html
     
  4. combatsxx

    combatsxx Member

    Joined:
    19 Oct 2007
    Messages:
    0
    Likes Received:
    69
    Reputations:
    -16
    >Антох тот топ читал..
    невыходит что-то
     
  5. combatsxx

    combatsxx Member

    Joined:
    19 Oct 2007
    Messages:
    0
    Likes Received:
    69
    Reputations:
    -16
    //del ;)
     
    #5 combatsxx, 18 Nov 2007
    Last edited: 20 Aug 2009
  6. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Не совсем понял что значит для автоматического бана.
    Если ты имеешь ввиду что ты вносишь 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 :)
     
    #6 .:EnoT:., 19 Nov 2007
    Last edited: 21 Nov 2007
    1 person likes this.
  7. combatsxx

    combatsxx Member

    Joined:
    19 Oct 2007
    Messages:
    0
    Likes Received:
    69
    Reputations:
    -16
    (непроканало
     
  8. Хозяин

    Хозяин Elder - Старейшина

    Joined:
    15 Mar 2006
    Messages:
    435
    Likes Received:
    404
    Reputations:
    110
    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); 

    ?>
     
  9. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Подправил скрипт, потестил, всё работает. Вот тебе и основа, дальше сам доработаешь если нужно :)
     
    #9 .:EnoT:., 21 Nov 2007
    Last edited: 21 Nov 2007