Просмотр полной версии : Скрипт банов
Нужна система банов на PHP и MySQL скрипт простой без всяких наворотов штобы я добавлял айпи и причину... ну у каждого юзвера была причина бана своя =) ну всё само собой хранилось в мускул...
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 в базе..если есть, то куда-нить пусть идет гулять
Когда-то писал, блокировщик по IP там есть среди прочего
http://forum.antichat.ru/thread40064.html
Немного подрегал для тебя скрипт, который сам использовал
http://dump.ru/files/n/n2998640/
']Немного подрегал для тебя скрипт, который сам использовал
http://dump.ru/files/n/n2998640/
скачал этот скрипт... только так и не понял што нуно вставить на страничку так сказать index.php ну штобы юзеры не смогли заходить...
nc.STRIEM
14.11.2007, 02:28
>>>Isis
$result = mysql_query($query);
if(mysql_num_rows > 0)
это как?
я так пологаю ты имел ввиду функцию
if(mysql_num_rows($result) > 0)
>>>Isis
$result = mysql_query($query);
if(mysql_num_rows > 0)
это как?
Это? эт только по большой накурке +)
файл ban.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
<?
$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
ну на неё будут заходить юзеры... корчое надо штобы тех кто в бане не допускало =)
nc.STRIEM
14.11.2007, 02:44
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);
}
Любитель извращений??
мой вариант:
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);
}
ну так што нужно в индекс написать...
Я предполагаю у тебя также есть скрипт, который подключается к БД, и ты его инклудишь перед каждым основным скриптом. Так вот в скрипт для коннекта добавь строки
$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 пользователя.
не работает =( напиши по пунктно што надо... этот способ не работает =(
народ ну не молчите е вы =( как сделать штобы работало...
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=6540
попробуй
blackybr
24.11.2007, 01:16
Обьясни что именно не работает ?=)
может ты просто не создаешь данную таблицу а просто запихиваешь скрипт ?)
практически все приведенное выше рабочее
всё создаю =)
прост онужен код который поместиьь нужно на странице шщтобы народ который в бане не мог зайти и видел причину
lsass.exe
24.11.2007, 02:12
смотри пост номер 11. В начало каждого файла вставляешь такой код
<?
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'));
?>
и все....
да не работает =( захожу на тсраницу и ничего не происходит хотя ип в бан добавил =(
Довольно странно, что об этом еще здесь не написали, но:
У абсолютного большинства пользователей интернета айпи динамический, т.е. при каждом подключении пользователя к сети интернет, провайдер выдает ему временный айпи. Следовательно если банить по айпи, то только по айпи провайдера, но это грубо, т.к. можно так забанить кого-нибудь нормального. Следовательно к бану по провайдеру надо добавить куки, браузер+разрешение экрана+ еще параметры, добываемые через браузер.
Как это сделать на пхп, не знаю (в основном не понятно вычисление айпи провайдера).
да ёмаё я на локалке тестирую и не пашет =( короче шо за нах... как сделать штобы работало?
ты какой Ip банить пытаешься?
Если свой внешний, под которым виден из инета, естественно у тебя ничего не выйдет.
Сервер на локалхосте всегда будет видеть тебя как 127.0.0.1, на это и опирайся в своих тестах
ты какой Ip банить пытаешься?
Если свой внешний, под которым виден из инета, естественно у тебя ничего не выйдет.
Сервер на локалхосте всегда будет видеть тебя как 127.0.0.1, на это и опирайся в своих тестах
я свой ип и баню....
<?
require_once "connect.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'));
?>
<?
$ip = ($_SERVER['REMOTE_ADDR']);
echo "<br>$ip";
?>
показываетца мой ип который я забанил
mysql_escape_string(htmlspecialchars($_SERVER['REMOTE_ADDR'])
о_О сильно.
$ip = ($_SERVER['REMOTE_ADDR']);
echo "<br>$ip";
вот какой здесь у тебя на локалке покажет такой и бань.
2Helios 127.0.0.1 по-моему это loopback адрес и если есть лок сеть, то ip компа будет другой такой какой покажет $_SERVER['REMOTE_ADDR']
о_О сильно.
вот какой здесь у тебя на локалке покажет такой и бань.
2Helios 127.0.0.1 по-моему это loopback адрес и если есть лок сеть, то ip компа будет другой такой какой покажет $_SERVER['REMOTE_ADDR']
А он показывает 127.0.0.1 если скрипт тестируется на локальном сервере.
мля бан не работает... хотябаню всё правельно именно тот ип который нудно и не работает вы протестируйте потом советуйте...
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot