PDA

Просмотр полной версии : Скрипт банов


Cactuz
13.11.2007, 02:01
Нужна система банов на PHP и MySQL скрипт простой без всяких наворотов штобы я добавлял айпи и причину... ну у каждого юзвера была причина бана своя =) ну всё само собой хранилось в мускул...

Isis
13.11.2007, 10:31
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 в базе..если есть, то куда-нить пусть идет гулять

Helios
13.11.2007, 13:16
Когда-то писал, блокировщик по IP там есть среди прочего
http://forum.antichat.ru/thread40064.html

[Raz0r]
13.11.2007, 17:49
Немного подрегал для тебя скрипт, который сам использовал
http://dump.ru/files/n/n2998640/

Cactuz
14.11.2007, 02:02
']Немного подрегал для тебя скрипт, который сам использовал
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)

VDShark
14.11.2007, 02:33
>>>Isis

$result = mysql_query($query);
if(mysql_num_rows > 0)

это как?
Это? эт только по большой накурке +)

Cactuz
14.11.2007, 02:41
файл 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."]&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
<?
$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);

}

Cactuz
14.11.2007, 02:50
ну так што нужно в индекс написать...

[Raz0r]
14.11.2007, 18:02
Я предполагаю у тебя также есть скрипт, который подключается к БД, и ты его инклудишь перед каждым основным скриптом. Так вот в скрипт для коннекта добавь строки
$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 пользователя.

Cactuz
14.11.2007, 18:10
не работает =( напиши по пунктно што надо... этот способ не работает =(

Cactuz
23.11.2007, 23:04
народ ну не молчите е вы =( как сделать штобы работало...

FeraS
23.11.2007, 23:32
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=6540
попробуй

blackybr
24.11.2007, 01:16
Обьясни что именно не работает ?=)

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

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

Cactuz
24.11.2007, 02:03
всё создаю =)
прост онужен код который поместиьь нужно на странице шщтобы народ который в бане не мог зайти и видел причину

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'));
?>
и все....

Cactuz
25.11.2007, 11:05
да не работает =( захожу на тсраницу и ничего не происходит хотя ип в бан добавил =(

Meanor
27.11.2007, 22:24
Довольно странно, что об этом еще здесь не написали, но:

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

Как это сделать на пхп, не знаю (в основном не понятно вычисление айпи провайдера).

Cactuz
27.11.2007, 23:20
да ёмаё я на локалке тестирую и не пашет =( короче шо за нах... как сделать штобы работало?

Helios
28.11.2007, 00:43
ты какой Ip банить пытаешься?

Если свой внешний, под которым виден из инета, естественно у тебя ничего не выйдет.

Сервер на локалхосте всегда будет видеть тебя как 127.0.0.1, на это и опирайся в своих тестах

Cactuz
28.11.2007, 23:02
ты какой 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";
?>
показываетца мой ип который я забанил

gibson
28.11.2007, 23:59
mysql_escape_string(htmlspecialchars($_SERVER['REMOTE_ADDR'])
о_О сильно.
$ip = ($_SERVER['REMOTE_ADDR']);
echo "<br>$ip";
вот какой здесь у тебя на локалке покажет такой и бань.
2Helios 127.0.0.1 по-моему это loopback адрес и если есть лок сеть, то ip компа будет другой такой какой покажет $_SERVER['REMOTE_ADDR']

Meanor
29.11.2007, 00:16
о_О сильно.

вот какой здесь у тебя на локалке покажет такой и бань.
2Helios 127.0.0.1 по-моему это loopback адрес и если есть лок сеть, то ip компа будет другой такой какой покажет $_SERVER['REMOTE_ADDR']

А он показывает 127.0.0.1 если скрипт тестируется на локальном сервере.

Cactuz
29.11.2007, 15:36
мля бан не работает... хотябаню всё правельно именно тот ип который нудно и не работает вы протестируйте потом советуйте...