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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> бан по ip, немножко не рабоатет 
:(
    Опции темы
Zhenek
Дата 8.12.2009, 03:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Есть код :

Код

<?

$res = mysql_query("SELECT * FROM `ban_ip` ")  or die(mysql_error());
while($ip = mysql_fetch_row($res)) {
    $bip = explode(".",$ip[1]);
    $uip = explode(".",$_SERVER['REMOTE_ADDR']);
 
    for($i=0; $i<4; $i++){
    $bip[$i] = str_replace("x","([0-9]{0,1})",$bip[$i]);
    if(substr($bip[$i],-6)=='{0,1})'){$bip[$i] = substr($bip[$i],0,-6)."{1})" ;}
 
    if(preg_match("/".$bip[$i]."/",$uip[$i])) $Allowed = False;
    }

}

if(!$Allowed ) die();
?>


Подключение к базе вызывается раньше чем этот фаил инклудом.



Он должен блокировать Ип  как просто так так и по маске   127.x.0.1

Но он всегда говорит что ИП в бане( что в нем не так??


Структура базы данных

id  ip  type      time  comment
1   127.0.0.1     0         блабла
2   145.5.0.1     0         блабла

--------------------
<удалено администрацией>
PM MAIL   Вверх
nerezus
Дата 8.12.2009, 03:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



Ну код и жесть.
Его можно записать ровно в 2 строки, причем вторая будет die().

1) Запрос делай на селект НУЖНОГО ip.
2) Зачем стравнивать посегментно? Это неверно, сравнивай целиком.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MoLeX
Дата 8.12.2009, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



как то так
Код


if( mysql_query("SELECT * FROM `ban_ip` WHERE `ip_type` = '".$_SERVER['REMOTE_ADDR']."' ") )
  exit();



Добавлено через 49 секунд
ip2long()
посмотри на эту фун-цию


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Zhenek
Дата 8.12.2009, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вы видимо не читали что я писал..

Мне нужно заносить в базу не только IP но еще и маски. прмиер :

127.x.0.0

тоесть вместо x  может быть цифры от 0 до 255
--------------------
<удалено администрацией>
PM MAIL   Вверх
Simpliest
Дата 8.12.2009, 08:21 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Zhenek @  8.12.2009,  06:34 Найти цитируемый пост)
127.x.0.0

маска = 127.%.%.123

ip LIKE маска

Добавлено через 1 минуту и 38 секунд
регуляркой впрочем делается почти так же


--------------------
user posted image
PM   Вверх
Ипатьев
Дата 8.12.2009, 10:45 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

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



Маска какая-то ОЧЕНЬ странная
PM MAIL   Вверх
_zorn_
Дата 8.12.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

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



Код конечно жесть, но ошибку все таки видно. 
Нет начальной инициализации $Allowed = true;
PM MAIL   Вверх
Nigel
Дата 8.12.2009, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


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

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



Можете попробовать такой вариант
Код

SELECT 1
FROM bans
WHERE $yourip REGEXP replace( ip, 'x', '[0-9]{1,3}' ) limit 1

Если есть возвращаемое значение, значит запрещаем доступ.
Можете также использовать поиск по диапазону. Для этого храните айпи адреса в виде чисел ip_from, ip_to. При сохранении в базу x заменяете на числа 0 и 255 соответсвенно.
Запрос будет вида
Код

select 1 from bans where $yourip >=ip_from and $yourip <=ip_to limit 1

Если в базе будет храниться несколько тысяч строк, то лучше использовать второй вариант, так как в этом случае поиск будет идти по ключу.
PM MAIL   Вверх
nerezus
Дата 8.12.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



Цитата

127.x.0.0 
 Это не маска, а результат неверных измышлений.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Pitlord
Дата 8.12.2009, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Google: CIDR

IP — число и про LIKE/регулярки надо забыть.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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