Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Равенство переменной и вывода из базы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
condpattern
Отправлено: 18 Сентября, 2013 - 12:49:47
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




Приветствую.
Хочу поставить ограничение на количество попыток входа по ip адресу.
Определяю ip:
PHP:
скопировать код в буфер обмена
  1. $ip = getenv("HTTP_X_FORWARDED_FOR");
  2.     if (empty($ip) || $ip == 'unknown') {
  3.         $ip = getenv("REMOTE_ADDR");
  4.     }

Выборка из базы:
PHP:
скопировать код в буфер обмена
  1. // Извлекаем из базы колличество неудачных попыток входа за последние 60 минут у пользователя с данным ip
  2.     $access_query = mysql_query("SELECT ip, number FROM access WHERE ip='$ip'", $db);
  3.     $access       = mysql_fetch_array($access_query);

Далее в своем коде вставляю след. условие:
PHP:
скопировать код в буфер обмена
  1. if ($ip == $access['ip']) {
  2.             // Если ip есть, то приплюсовываем количество
  3.             $new      = $access['number'] + 1;
  4.             mysql_query("UPDATE access SET number=$new,date=NOW() WHERE ip='$ip'");
  5.         } else {
  6.             // Если за последние 60 минут ошибок не было, то вставляем новую запись в таблицу "access"
  7.             mysql_query("INSERT INTO access (ip,date,number) VALUES ('$ip',NOW(),'1')");
  8.         }
  9.  

На локальном сервере этот код работает. Но когда переношу на хостинг, почему-то сравнение ip из базы и $ip переменной всегда возвращает ложь и для одного и того же ip каждый раз создается новая строка.
Может это связано с тем, что как-то криво записано условие равенства? Есть идеи?
С уважением.
 
 Top
Voodoo
Отправлено: 18 Сентября, 2013 - 15:16:05
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Май 2013  


Помог: 0 раз(а)





а HTTP_X_FORWARDED_FOR насколько я помню возвращает ip-адрес сервера, а на локальной это все равно 127.0.0.1 поэтому работает

(Отредактировано автором: 18 Сентября, 2013 - 15:16:20)

 
 Top
condpattern
Отправлено: 19 Сентября, 2013 - 15:38:46
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




[quote=Voodoo][/quote]
Благодарю за помощь. Проблема возникла из-за очень глупой ошибки. Длину поля под IP varchar брал 12, а нужно 15, поэтому с ip локального сервера работало, а внешним нет.
 
 Top
esterio
Отправлено: 19 Сентября, 2013 - 16:03:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




для работы с IP в Mysql есть свои функции
http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]s-functions[dot]html
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB