Нужна система банов на PHP и MySQL скрипт простой без всяких наворотов штобы я добавлял айпи и причину... ну у каждого юзвера была причина бана своя =) ну всё само собой хранилось в мускул...
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 в базе..если есть, то куда-нить пусть идет гулять
скачал этот скрипт... только так и не понял што нуно вставить на страничку так сказать index.php ну штобы юзеры не смогли заходить...
>>>Isis PHP: $result = mysql_query($query); if(mysql_num_rows > 0) это как? я так пологаю ты имел ввиду функцию if(mysql_num_rows($result) > 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>Страницы: "; $result2= mysql_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."] "; else echo "<a href=ban.php?start=".(($i-1)*15).">[".$i."]</a> "; } if ($res - ( ($i-1) *15)>0) { if ($start == (($i-1)*15)) echo "[".$i."] "; 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 ну на неё будут заходить юзеры... корчое надо штобы тех кто в бане не допускало =)
Любитель извращений?? мой вариант: 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); }
Я предполагаю у тебя также есть скрипт, который подключается к БД, и ты его инклудишь перед каждым основным скриптом. Так вот в скрипт для коннекта добавь строки 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 пользователя.
Обьясни что именно не работает ?=) может ты просто не создаешь данную таблицу а просто запихиваешь скрипт ?) практически все приведенное выше рабочее
всё создаю =) прост онужен код который поместиьь нужно на странице шщтобы народ который в бане не мог зайти и видел причину
смотри пост номер 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')); ?> и все....
Довольно странно, что об этом еще здесь не написали, но: У абсолютного большинства пользователей интернета айпи динамический, т.е. при каждом подключении пользователя к сети интернет, провайдер выдает ему временный айпи. Следовательно если банить по айпи, то только по айпи провайдера, но это грубо, т.к. можно так забанить кого-нибудь нормального. Следовательно к бану по провайдеру надо добавить куки, браузер+разрешение экрана+ еще параметры, добываемые через браузер. Как это сделать на пхп, не знаю (в основном не понятно вычисление айпи провайдера).