Скрипт банов

Discussion in 'PHP' started by Cactuz, 13 Nov 2007.

  1. Cactuz

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

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    Нужна система банов на PHP и MySQL скрипт простой без всяких наворотов штобы я добавлял айпи и причину... ну у каждого юзвера была причина бана своя =) ну всё само собой хранилось в мускул...
     
  2. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    PHP:
    if($_GET['pass'] == 'pwd' && $_GET['do'] == 'ban')
    {
    echo 
    "<form method='post'><input type='text' name='ip' value='127.0.0.1' /><input type='submit' name='but' value='Ban!' /></form>";
    if(isset(
    $_POST['but']))
    {
    if(isset(
    $_POST['ip']))
    {
    $query "INSERT INTO ban('id', 'ip') values(NULL, '$_POST['ip']');";
    $result mysql_query($query);
    if(
    mysql_num_rows 0) echo "IP address".$_POST['ip']." has been banned" or die();
    }
    }
    }
    Вообщем что-то такое, писал в браузере поэтомучто-то не так может быть...
    А потом в каком-нить файле проверяй есть ли remote_addr в базе..если есть, то куда-нить пусть идет гулять
     
  3. Helios

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

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Когда-то писал, блокировщик по IP там есть среди прочего
    /thread40064.html
     
  4. [Raz0r]

    [Raz0r] Elder - Старейшина

    Joined:
    25 Feb 2007
    Messages:
    425
    Likes Received:
    484
    Reputations:
    295
    Немного подрегал для тебя скрипт, который сам использовал
    http://dump.ru/files/n/n2998640/
     
  5. Cactuz

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

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    скачал этот скрипт... только так и не понял што нуно вставить на страничку так сказать index.php ну штобы юзеры не смогли заходить...
     
  6. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    >>>Isis
    PHP:
    $result mysql_query($query);
    if(
    mysql_num_rows 0
    это как?

    я так пологаю ты имел ввиду функцию
    if(mysql_num_rows($result) > 0)
     
    #6 nc.STRIEM, 14 Nov 2007
    Last edited: 14 Nov 2007
  7. VDShark

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

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    Это? эт только по большой накурке +)
     
  8. Cactuz

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

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    файл ban.php
    PHP:
    <? 
     
    error_reporting(0
    ?>

    <?php

    include "connect.php";

    !empty(
    $start) ? @$start = (int) $_GET['start'] : $start 0;
    @
    $id = (int) $_GET['id'];

    if (!empty(
    $id))
    {
        
    mysql_query("DELETE FROM `cac_ban` WHERE id='$id'");
        echo 
    "IP адрес разблокирован";
    }
    elseif (isset(
    $_POST['submit']))
    {
        
    $reason mysql_real_escape_string(htmlspecialchars($_POST['reason']));
        
    $ip mysql_real_escape_string(htmlspecialchars($_POST['ip']));
        
    mysql_query("INSERT INTO `cac_ban` (ip,reason) VALUES ('$ip','$reason')");
        echo 
    "IP адрес <B>$ip</B> заблокирован";

    else {
        echo 
    "<BR><form action=\"ban.php\" METHOD=\"POST\">IP: <Input Type=\"text\" Name=\"ip\" size=20 value=\"$ip\"> Причина: <Input Type=\"text\" Name=\"reason\" size=65>   <Input Type=\"submit\" Name=\"submit\" value=\"Заблокировать\" size=65></form><BR><BR>";
        
    $result=mysql_query("SELECT id,ip,reason FROM cac_ban ORDER BY id DESC LIMIT $start, 15"); 
        if (@
    mysql_num_rows($result) != 0) {
        
    $x=0;
        echo 
    "<table width=100%>";
        while (
    $x mysql_num_rows($result)) {
            
    $id mysql_result($result$x'id');
            
    $ip mysql_result($result$x'ip');        
            
    $reason mysql_result($result$x'reason');
            echo 
    "<tr><td width=30%>$ip</td><td width=60%>$reason</td><td width=10%><a href=ban.php?id=$id>[Удалить]</a></td>";
            
    $x++;
        }
        echo 
    "</table>";
            echo 
    "<HR>Страницы: ";
            
    $result2mysql_query("SELECT count(*) FROM cac_ban");
            
    $res mysql_result($result2,0);
            
    $max_pages=round($res/15);
            for(
    $i=1$i<=$max_pages$i++) {
                if (
    $start == (($i-1)*15))  echo "[".$i."]&nbsp;";
                else echo 
    "<a href=ban.php?start=".(($i-1)*15).">[".$i."]</a>&nbsp;";
            }
            if (
    $res - (  ($i-1) *15)>0) {
                if (
    $start == (($i-1)*15))  echo "[".$i."]&nbsp;";
                else echo 
    "<a href=ban.php?start=".(($i-1)*15).">[".$i."]</a>";
            }
        }
    }
    ?>
    файл connect.php
    PHP:
    <?
      
    $dbhost     'localhost'// mysql host
      
    $dbname     'dvig'// mysql DB name
      
    $dbuname    "root"// mysql username
      
    $dbpass     ""// mysql userpass
    ?>


    <?
    $db 
    mysql_connect("$dbhost""$dbuname""$dbpass") or die("Ошибка при подключении");

    if(!
    $db) die("no db");
    if(!
    mysql_select_db("$dbname",$db)) die(mysql_error());
    if(!
    get_magic_quotes_gpc())
    {
      
    $_GET array_map('mysql_real_escape_string'$_GET); 
      
    $_POST array_map('mysql_real_escape_string'$_POST); 
      
    $_COOKIE array_map('mysql_real_escape_string'$_COOKIE);
    }
    else
    {  
       
    $_GET array_map('stripslashes'$_GET); 
       
    $_POST array_map('stripslashes'$_POST); 
       
    $_COOKIE array_map('stripslashes'$_COOKIE);
       
    $_GET array_map('mysql_real_escape_string'$_GET); 
       
    $_POST array_map('mysql_real_escape_string'$_POST); 
       
    $_COOKIE array_map('mysql_real_escape_string'$_COOKIE);
    }

    $ip mysql_query("SELECT * FROM `cac_ban` WHERE `ip` = '".mysql_escape_string(htmlspecialchars($_SERVER['REMOTE_ADDR']))."'");
    if (@
    mysql_num_rows($ip) != 0) die("Permission denied");
    ?>
    Незнаю што нужно в писать в файл index.php
    ну на неё будут заходить юзеры... корчое надо штобы тех кто в бане не допускало =)
     
  9. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    Любитель извращений??

    мой вариант:
    PHP:
    if(!get_magic_quotes_gpc())
        {
            foreach(
    $_GET as $name => $val)
                
    $_GET[$name] = mysql_escape_string($val);
            
            foreach(
    $_POST as $name => $val)
                
    $_POST[$name] = mysql_escape_string($val);
            
            foreach(
    $_COOKIE as $name => $val)
                
    $_COOKIE[$name] = mysql_escape_string($val);    
        
        }
     
    #9 nc.STRIEM, 14 Nov 2007
    Last edited: 14 Nov 2007
  10. Cactuz

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

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    ну так што нужно в индекс написать...
     
  11. [Raz0r]

    [Raz0r] Elder - Старейшина

    Joined:
    25 Feb 2007
    Messages:
    425
    Likes Received:
    484
    Reputations:
    295
    Я предполагаю у тебя также есть скрипт, который подключается к БД, и ты его инклудишь перед каждым основным скриптом. Так вот в скрипт для коннекта добавь строки
    PHP:
    $ip mysql_query("SELECT * FROM `cac_ban` WHERE `ip` = '".mysql_escape_string(htmlspecialchars($_SERVER['REMOTE_ADDR']))."'"); 
    if (@
    mysql_num_rows($ip) != 0) die("Permission denied<br>Reason: ".mysql_result($ip,0,'reason'));
    В итоге при каждом обращении к любому твоему скрипту, в котором инклудится скрипт для коннекта к БД, будет выполнятся SQL-запрос, который будет проверять присутствует ли запись с IP пользователя.
     
  12. Cactuz

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

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    не работает =( напиши по пунктно што надо... этот способ не работает =(
     
  13. Cactuz

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

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    народ ну не молчите е вы =( как сделать штобы работало...
     
  14. FeraS

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

    Joined:
    19 Jan 2007
    Messages:
    555
    Likes Received:
    420
    Reputations:
    76
    http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=6540
    попробуй
     
    3 people like this.
  15. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    Обьясни что именно не работает ?=)

    может ты просто не создаешь данную таблицу а просто запихиваешь скрипт ?)

    практически все приведенное выше рабочее
     
  16. Cactuz

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

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    всё создаю =)
    прост онужен код который поместиьь нужно на странице шщтобы народ который в бане не мог зайти и видел причину
     
  17. lsass.exe

    lsass.exe Elder - Старейшина

    Joined:
    5 Aug 2007
    Messages:
    156
    Likes Received:
    161
    Reputations:
    24
    смотри пост номер 11. В начало каждого файла вставляешь такой код
    PHP:
    <?
    require_once 
    "config.php"// конфиг для подключения к бд
    $ip mysql_query("SELECT * FROM `cac_ban` WHERE `ip` = '".mysql_escape_string(htmlspecialchars($_SERVER['REMOTE_ADDR']))."'"); 
    if (@
    mysql_num_rows($ip) != 0) die("Permission denied<br>Reason: ".mysql_result($ip,0,'reason')); 
    ?>
    и все....
     
    #17 lsass.exe, 24 Nov 2007
    Last edited: 24 Nov 2007
  18. Cactuz

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

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    да не работает =( захожу на тсраницу и ничего не происходит хотя ип в бан добавил =(
     
  19. Meanor

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

    Joined:
    9 Sep 2007
    Messages:
    66
    Likes Received:
    9
    Reputations:
    0
    Довольно странно, что об этом еще здесь не написали, но:

    У абсолютного большинства пользователей интернета айпи динамический, т.е. при каждом подключении пользователя к сети интернет, провайдер выдает ему временный айпи. Следовательно если банить по айпи, то только по айпи провайдера, но это грубо, т.к. можно так забанить кого-нибудь нормального. Следовательно к бану по провайдеру надо добавить куки, браузер+разрешение экрана+ еще параметры, добываемые через браузер.

    Как это сделать на пхп, не знаю (в основном не понятно вычисление айпи провайдера).
     
    #19 Meanor, 27 Nov 2007
    Last edited: 27 Nov 2007
  20. Cactuz

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

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    да ёмаё я на локалке тестирую и не пашет =( короче шо за нах... как сделать штобы работало?