Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с cookie

420
12 марта 2009 года
Fobos
197 / / 10.03.2006
Привет всем! Всех с Весной!!!

В общем в это прекрасное весеннее утро настроение мне испортила какая-то ошибка в скрипте PHP, исправление которой я никак не могу найти. Почему-то не посылаются в скрипте cookie!!! Причём причину я найти никак не могу.:confused:

Перекопал справочники, перечитал про setcookie(), ничего не нашел.

Скрипт предназначен для простого блокирования на определённое время пользователя, который 5 раз ввел неверно пароль при входе на сайт.

Если что, константа LOGIN_BLOCK равна 3-м.

Вот фрагмент кода PHP:
Код:
$msg='';

if ($crypted_pass !== $login_data['password'])
         {
            if (isset($HTTP_COOKIE_VARS['inp_pass_count']))
               $inp_pass_count = $HTTP_COOKIE_VARS['inp_pass_count']-1;
            else
               $inp_pass_count = 4;
           
            $msg = "Пароль введён неверно! Проверьте правильность ввода пароля! У вас есть ещё ".$inp_pass_count." попытки ввода.
            В случае, если по истечении всех попыток вы так и не введёте правильно пароль, вы будете заблокированы
            на "
.LOGIN_BLOCK." минут, по окончании которых вы вновь будете иметь 5 попыток ввода пароля.
            Данные меры предназначены для защиты от злоумышленников, стремящихся получить данные для входа в аккаунты других пользователей."
;
   
            if ($inp_pass_count > 0)
            {
               
               setcookie('inp_pass_count', $inp_pass_count, time()+(LOGIN_BLOCK*60));
               setcookie('inp_pass_count_time_delay_start', time(), time()+(LOGIN_BLOCK*60));
               $msg.="РАБОТАЕТ - ".$HTTP_COOKIE_VARS['inp_pass_count'];
            }
           
            if ($inp_pass_count <= 0)
            {
               $msg = "Извините, вы исчерпали свои попытки и так и не ввели правильный пароль!
               Возможно это произошло из-за опечаток.<br>
               Возможность попробовать ещё у вас появится через"
;
           
               if (isset($HTTP_COOKIE_VARS['inp_pass_count_time_delay_start']))
               {
                  $delay = round(-((time()-((LOGIN_BLOCK*60)+$HTTP_COOKIE_VARS['inp_pass_count_time_delay_start']))/60));
                  if ($delay == 0)
                  {
                     $delay = -(time()-((LOGIN_BLOCK*60)+$HTTP_COOKIE_VARS['inp_pass_count_time_delay_start']));
                     $msg .= " $delay секунд.";
                  }
                  else
                  {
                     $msg .= " $delay минут.";
                  }
               }
            }
...
потом
echo $msg;

строку $msg.="РАБОТАЕТ - ".$HTTP_COOKIE_VARS['inp_pass_count']; добавил специально, чтобы видеть, срабатывает или нет.

Поидее должно выдавать "РАБОТАЕТ - 3" (значение inp_pass_count),
но выдает "РАБОТАЕТ - "!!!
Я в шоке!!! Как такое может быть? Подскажите пожалуйста!
Может я чего-то не вижу??? Или не знаю?
420
12 марта 2009 года
Fobos
197 / / 10.03.2006
Странно, решение оказалось в замене $HTTP_COOKIE_VARS на $_COOKIE

Понять можно конечно всё, но почему один и тот же скрипт на одном хосте сервера работает с $HTTP_COOKIE_VARS а на другом хосте не работает!?
13
12 марта 2009 года
RussianSpy
3.0K / / 04.07.2006
Зависит от настроек сервера

Лучше использовать ТОЛЬКО сокращенные версии: $_COOKIE, $_POST, $_FILES, $_GET

Про длинные версии лучше забыть - это устаревший вариант.
976
12 марта 2009 года
mikhalych
198 / / 04.01.2009
Я позволю себе предположить $HTTP_COOKIE_VARS был заменен на $_COOKIE
также как и $HTTP_POST_VAR на $_POST, $HTTP_GET_VARS на $_GET и т.д. и т.п.

длинные имена глобальных переменных в более поздних версиях пхп были изменены на более короткие по понятным причинам.
:)
420
13 марта 2009 года
Fobos
197 / / 10.03.2006
В общем, я читал, что пхп с верссии 4.ххх примерно ввели новые короткие имена этим переменным, но просто думал почему на одном и том же Денвере на локалхосте в одном созданном хосте работает, а в другом нет :) Собственно с проблемой то я разобрался, да вот непонятно почему так сервер работает. Не может же он на разные (созданные уже мной) виртуальные хосты пускать разные правила исполнения скриптов (если конечно не использовать локальные настройки через .htaccess).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог