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
Форумы портала PHP.SU :: Версия для печати :: Равенство переменной и вывода из базы
Форумы портала PHP.SU » » Вопросы новичков » Равенство переменной и вывода из базы

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

1. condpattern - 18 Сентября, 2013 - 12:49:47 - перейти к сообщению
Приветствую.
Хочу поставить ограничение на количество попыток входа по 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 каждый раз создается новая строка.
Может это связано с тем, что как-то криво записано условие равенства? Есть идеи?
С уважением.
2. Voodoo - 18 Сентября, 2013 - 15:16:05 - перейти к сообщению

а HTTP_X_FORWARDED_FOR насколько я помню возвращает ip-адрес сервера, а на локальной это все равно 127.0.0.1 поэтому работает
3. condpattern - 19 Сентября, 2013 - 15:38:46 - перейти к сообщению
[quote=Voodoo][/quote]
Благодарю за помощь. Проблема возникла из-за очень глупой ошибки. Длину поля под IP varchar брал 12, а нужно 15, поэтому с ip локального сервера работало, а внешним нет.
4. esterio - 19 Сентября, 2013 - 16:03:51 - перейти к сообщению
для работы с IP в Mysql есть свои функции
http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]s-functions[dot]html

 

Powered by ExBB FM 1.0 RC1