Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: не работает бан на сайте

Сообщения:  [1-10]    [11-20]  [21-22] 

 
 автор: Trianon   (30.06.2007 в 13:54)   письмо автору
 
   для: Ralph   (30.06.2007 в 13:16)
 

Именно потому, что сети есть разных классов ( имеющие разное количество адресов хостов в подсети).
Основные классы:
A - с маской подсети 255.0.0.0 (или /8 в нотации cisco) и 16 миллионами адресов хостов.
B -с маской подсети 255.255.0.0 (или /16) и 65 тысячами адресов хостов.
C - с маской подсети 255.255.255.0 (или /24) и 254 адресами хостов. (или /24)
Но бывают и промежуточные: с n бит под адрес подсети и 32-n бит под адрес хоста.
Провайдеры очень любят раздавать адресное пространство интернета, например, подсетками вида 255.255.255.248 (или /29) с шестью хостами в сети.
Для почтовика, файрволла, демонов http, https и DNS, менеджемент-сервера SSH - в самый раз. Если слегка потеснить - даже на гейтвей останется. :)

   
 
 автор: Angel_Hranitel   (30.06.2007 в 13:35)   письмо автору
 
   для: Ralph   (30.06.2007 в 13:16)
 

Спасибо! Это я понял и сразу написал как положено... Вот не могу понять, что будет если делить не на 256, а на 128?

   
 
 автор: Ralph   (30.06.2007 в 13:16)   письмо автору
 
   для: Trianon   (30.06.2007 в 11:46)
 

Извините,не совсем понял ваш ответ,особенно в скобках после слов "...класса С" ? И почему только "...пытается..." ? :-)
To Angel:Вчера меня сильно температурило,только сегодня заметил-какой нафиг update,конечно же insert.Кавычки не ставил,т.к. Пишу с телефона,а там с кавычками,особенно с обратными,сложно...И все же не очень полагайтесь на remote_addr :-)

   
 
 автор: Trianon   (30.06.2007 в 11:46)   письмо автору
 
   для: Unkind   (29.06.2007 в 20:21)
 

>Совсем непонятно для чего Вы делите десятичное представление адреса на 256.

Наверное пытается получить адрес подсети, убрав номер машины из IP.
Правда справедливо это будет лишь для сетей класса C (/24, 255.255.255.0)

   
 
 автор: Unkind   (29.06.2007 в 20:21)   письмо автору
 
   для: Angel_Hranitel   (29.06.2007 в 20:07)
 

1. IP-адрес - строка. Поэтому нужно её обрамлять кавычками: INET_ATON('127.0.0.1').
2. Так как в запросе ошибка, то mysql_num_rows() возвращает boolean(false).
boolean(false) не подобно int(0). Поэтому условие "$q !== 0" является истинным и выводится надпись.

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

   
 
 автор: Angel_Hranitel   (29.06.2007 в 20:07)   письмо автору
 
   для: Ralph   (29.06.2007 в 18:33)
 

угу.... только вот проблема...
1) при добавление записи

$q="INSERT INTO bann SET
            name='".$rezult['name']."',
            ua='".$rezult['ua']."',
            ip=FLOOR(INET_ATON(".$ip.")/256)";

ошибка

Ошибка при добавлении записи - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.0.1)/256)' at line 4


2) при определении забанен ли человек
разбил на 2 запроса

$q=mysql_query("SELECT * FROM bann WHERE name='$_SESSION[name]'");
$q=mysql_num_rows($q);
if ($q!==0)
{
echo "Внимание! Ваш ник добавили в бант лист!!!<br/>";
}
$ip=$REMOTE_ADDR;
$q=mysql_query("SELECT * FROM bann WHERE ip=FLOOR(INET_ATON(".$ip.")/256) AND ua=$HTTP_ACCEPT");
$q=mysql_num_rows($q);
if ($q!==0)
{
echo "Внимание! Ваш IP и UserAgent совпадает данными, добавлеными в бант лист!!!<br/>";
}

хоя таблица с баном пустая, но получаю

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in T:\home\virtual\site.ru\conf.php on line 148
Внимание! Ваш IP и UserAgent совпадает данными, добавлеными в бант лист!!!

   
 
 автор: Ralph   (29.06.2007 в 18:33)   письмо автору
 
   для: Ralph   (29.06.2007 в 18:26)
 

А в моем примере банится пользователь с ником Ralph ИЛИ кто то с другим ником,но(имеющий похожий на мой ip И такой-же,как у меня HTTP_ACCEPT)

   
 
 автор: Ralph   (29.06.2007 в 18:26)   письмо автору
 
   для: Ralph   (29.06.2007 в 18:14)
 

Не обязательно делить на 256,изменив делитель,вы соответственно сузите или расширите диапазон блокируемых адресов.А ваша проверка порочна изначально,потому-что базируется только на логике И (AND).К примеру,некий Ralph нас...л в вашей гостевой,вы его забанили...Но если тот же Ralph зайдет с другого агента или просто изменится его ip (а при использовании Мини-Оперы REMOTE_ADDR меняется чуть ли не при каждом заходе,то ваш скрипт скажет мне "добро пожаловать"

   
 
 автор: Ralph   (29.06.2007 в 18:14)   письмо автору
 
   для: Angel_Hranitel   (29.06.2007 в 15:54)
 

Ну,к примеру,получаем айпи юзверя if(isset($HTTP_X_FORWARDED_FOR)){$ip=$HTTP_X_FORWARDED_FOR} elseif(isset($HTTP_X_REAL_IP)){$ip=$HTTP_X_REAL_IP} else{$ip=$REMOTE_ADDR;} заносим в таблицу бани UPDATE ban SET name=$name,ua=$HTTP_ACCEPT,ip= FLOOR(INET_ATON($ip)/256) позже проверяем SELECT * FROM ban WHERE name=$name OR (ip=FLOOR(INET_ATON($ip)/256) AND ua=$HTTP_ACCEPT)

   
 
 автор: Angel_Hranitel   (29.06.2007 в 15:54)   письмо автору
 
   для: Ralph   (29.06.2007 в 10:46)
 

Ralph, не совсем понял... Можно примерчик?

   

Сообщения:  [1-10]    [11-20]  [21-22] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования