Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программно баним по подсети 
:(
    Опции темы
Axxent
  Дата 17.4.2005, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 3
Всего: 5



Возникла необходимость поднять "банилку", да не простую по одному IP, а мудреную по подсети smile Была идея по запросу перечислять все возможные айпи в файл, из которого потом проверять (и отфутболивать) нехороших юзеров. Подскажите, может быть есть более эффективный способ?
PM MAIL ICQ   Вверх
RAJ
Дата 17.4.2005, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.4.2005

Репутация: 1
Всего: 1



Нашел скрипт у себя smile , тот не тот посмотри
Код

<?
require "guestbook.inc.php";
if(!$authorized)
{
header("Location: index.php");
exit;
}
include "raj.css";
echo "<html>";
echo "<Title>-=]ADMIN ADD BAN[=-</Title>";
echo "<body background=bg1.gif>";
echo "<TABLE style='BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; BORDER-LEFT: gray 1px solid; BORDER-BOTTOM: gray 1px  solid' cellSpacing=0 cellPadding=10 width=70% align=center border=0 background=bg.gif>";
echo "<TBODY>";
echo "<TR><TD width=100%>";
echo "<TABLE  cellSpacing=0 cellPadding=0 width=60% align=center bgColor=#ffffff border=0>";
echo "<TBODY>";
echo "<TR><TD>";
$f = @file("$DIR/filter.txt");
if(!$f)$f = array();
$f = array_unique($f);
if(!$op)
{
for($i=0;$i<count($f);$i++)
{
$fip = rtrim($f[$i]);
echo "<table cellspacing=0 cellpadding=1 border=0 bgcolor=666666 width=100%>";
echo "<TR><TD><TABLE  cellSpacing=0 cellPadding=1 width=100% align=center border=0><TR><TD width='100%' bgColor=#d2d0d7>";
echo "$fip -=[<a href=filter.php?op=delete&ip=$fip>DELETE BAN</a>]=-<br>";
echo "</TD></TR></TABLE></TD></TR></TABLE></TD></TR><TR><TD>";
}
echo "<form form action=filter.php>";
echo "<TABLE style='BORDER-RIGHT: 1px outset; BORDER-TOP: 1px outset; BORDER-LEFT: 1px outset; BORDER-BOTTOM: 1px outset' cellSpacing=1 cellPadding=1 width=100% align=center border=0>";
echo "<TBODY>";
echo "<TR><TD align=middle width=100% bgColor=#7c8794><B><FONT color=#ffffff>-=]ADMIN ADD BAN[=-</FONT></B></TD></TR>";
echo "<TR><TD width=100% bgColor=#ffffff><TABLE cellSpacing=0 cellPadding=0 width=100% border=0><TBODY>";
echo "<TR><TD align=center><input size=15 maxlength=15 name='ip' value='$ip' class=field></TD></TR>";
echo "</TBODY></TABLE></TD></TR>";
echo "<TR><TD align=middle width=100% bgColor=#ffffff>";
echo "<INPUT type=submit value='::: ADD BAN :::' class=button></TD></TR></TBODY></TABLE>";
echo "<INPUT type=hidden value=add name='op'> </FORM>";
}
else{
$fp = fopen("$DIR/filter.txt", "w");
for($i=0;$i<count($f);$i++)
{
$fip = rtrim($f[$i]);
if($op != "delete" || $fip != $ip)
fwrite($fp, "$fip\n");
}
if($op == "add" && $ip) fwrite($fp, "$ip\n");
fclose($fp);
echo "<meta http-equiv='refresh' content='0;url=filter.php'>";
}
echo "</TD></TR></TBODY></TABLE>";
echo "<BR><CENTER><a href=index.php> -=]BACK ADMIN[=- </a></CENTER></TD></TR></TBODY></TABLE><center>";
include("footer.php");
echo "</center> </BODY></HTML>";
?> 


Это для гостевой, если адрес забанин то чел не может оставить сообщение
Код


$f = @file("$DIR/filter.txt");
if(is_array($f) && in_array("$REMOTE_ADDR\n", $f))
{
header("Location: index.php");
exit;
}


Это сообщение отредактировал(а) RAJ - 17.4.2005, 12:53
PM MAIL   Вверх
Axxent
Дата 17.4.2005, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 3
Всего: 5



Ну это-то понятно smile Говорю же - такая идея была. Но вариант прописывания в файле всей подсети мне не очень нравится. Подумать только - скажем, 193.123.284.* переделать в 255 строк с 193.123.284.1 до 193.123.284.255. Оно бы ниче, а вдруг флуд (имею в виду непрерывный поток запросов от IP)? Сервер загнется... Еще хуже если популярность скакнет до высот, тогда все действия будут производиться впустую. С иными движками (тот же пхпнюк) так уже было. Совсем не охота делать обязательную регистрацию в движке... Есть идеи? smile

Это сообщение отредактировал(а) Axxent - 17.4.2005, 13:17
PM MAIL ICQ   Вверх
RAJ
Дата 17.4.2005, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.4.2005

Репутация: 1
Всего: 1



А зачем прописывать в файле все 255, смысл этого? если зашел под 193.123.284.17 то и будет в файле 193.123.284.17 а не все 255 ип.

Может чёто я не допонял (плохо объяснил smile )
PM MAIL   Вверх
Mal Hack
Дата 17.4.2005, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Axxent
Ты в файл пиши только подсеть и все. больше ничего не надо.
PM ICQ   Вверх
Axxent
Дата 17.4.2005, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 3
Всего: 5



Хотите сказать что
Код

in_array("$REMOTE_ADDR\n", $f)

отдаст true для любого конкретного адреса, занесенного в файл по подсети *? Или предлагаете регами проверять что к чему?

Это сообщение отредактировал(а) Axxent - 17.4.2005, 14:34
PM MAIL ICQ   Вверх
Mal Hack
Дата 17.4.2005, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Рэгом, конечно.
Читаешь из файла по строчно, где есть ТОЛЬКО подсети.
Затем implode по |, затем str_replace( "." , "\." , $str ), потом trim после чего делаешь рэг:
if( preg_match( "#^(" . $str . ")$#" ) )
{ print "banned IP"; }
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1105 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.