[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проблема с КУКИ
_Dimarik__
//пытаемся установить COOKIE
setcookie('hash', $hash, time() + 3600 * 24 * 365);
if(empty($_COOKIE['hash']))
exit('Включите куки');

время от времени возникает эта ошибка.
Эти строки кода вызываются рпи авторизации. Причём я заметил одну закономерность.
Ввожу логин и пароль. вызывается эта setcookie: выскакивает эта ошибка. Потом возвращаюсь назад и повторяю то же самое действие. Ошибки нет. всё работает. объясните пожалуйста в чём дело и как исправить



Спустя 5 минут, 43 секунды (30.08.2010 - 18:20) twin написал(а):
Ну вопервых так включение кук не проверишь. Нужно страницу перезагружать.
А во вторых - какая ошибка то?

Спустя 32 минуты, 31 секунда (30.08.2010 - 18:52) _Dimarik__ написал(а):
на я имел в виду что exit срабатывает.
А как тогда правильно проверить включение кук?
Скорее всего дело идёт так:
setcookie('hash', $hash, time() + 3600 * 24 * 365);//устанавливаем куки
if(empty($_COOKIE['hash']))//почему-то переменная пуста
exit('Включите куки');//выскакивает exit
при перезапуски страницы (как ты сказал) этого нет и всё нормально работает. как исправить, чтоб всё грамотно работало?

Спустя 6 минут, 3 секунды (30.08.2010 - 18:58) amazing написал(а):
А при первой загрузки страницы $hash точно существует?

Спустя 5 минут, 39 секунд (30.08.2010 - 19:04) twin написал(а):
Чтобы поставить кукис, нужно отправить заголовки. А значит перезагрузить страницу.

 
  if(empty($_COOKIE['hash']))
{
      setcookie('hash', $hash, time() + 3600 * 24 * 365);
                            header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}
                        else
                            // Куки включены

Но так делать нельзя, ибо если куки отключены, редирект зациклится.
По хорошему нужно поставить кукис, редиректнуть на другую страницу. Там проверить. Если нету - exit('Включите куки'); если есть - редирект обратно.

А зачем эта проверка? Кукис - вещь личная и интимная. Не все любят их использовать. А скрипт должен работать и без них.

Спустя 4 минуты, 55 секунд (30.08.2010 - 19:09) Rivalryzerg написал(а):
Если уж совсем надо, то добавить:
setcookie('hash', $hash, time() + 3600 * 24 * 365);
$_COOKIE['hash'] = $hash;
Но не совсем корректно так делать

Спустя 14 минут, 4 секунды (30.08.2010 - 19:23) twin написал(а):
Цитата
Если уж совсем надо, то добавить:
что это даст?

Спустя 8 минут, 17 секунд (30.08.2010 - 19:31) _Dimarik__ написал(а):
Цитата
А при первой загрузки страницы $hash точно существует?

да скорее всего нет

Спустя 1 минута, 34 секунды (30.08.2010 - 19:33) _Dimarik__ написал(а):

Цитата

А зачем эта проверка? Кукис - вещь личная и интимная. Не все любят их использовать. А скрипт должен работать и без них.

ну должен же у пользователя быть выбор: через сессию или через куки.
Если он всё-таки решил что через куки заохдить будет, то надо проверить, включил он их или нет

Спустя 33 секунды (30.08.2010 - 19:33) Rivalryzerg написал(а):
twin, работать в этом же скрипте с нужными переменными куки.

Спустя 1 минута, 2 секунды (30.08.2010 - 19:34) _Dimarik__ написал(а):
а как насчёт такой проверки:
if(!setcookie([а тут параметры]))
die('Включите куки');
???

Спустя 1 минута, 34 секунды (30.08.2010 - 19:36) _Dimarik__ написал(а):
или вот так?
if(!isset($_COOKIE['hash'])) exit('Включите куки');
if(in_array("hash", $_COOKIE)) exit('Ошибка 2');
хотя я не совсем понимаю зачем нужна перезагрузка страницы?

Спустя 1 час, 57 минут, 15 секунд (30.08.2010 - 21:33) Nord написал(а):
Цитата
а как насчёт такой проверки:
if(!setcookie([а тут параметры]))
die('Включите куки');
???

Не получится
Цитата

или вот так?
if(!isset($_COOKIE['hash'])) exit('Включите куки');
if(in_array("hash", $_COOKIE)) exit('Ошибка 2');

Только после перезагрузки страницы
Цитата
хотя я не совсем понимаю зачем нужна перезагрузка страницы?

Чтобы куки отправились пользователю.
Если у него включены куки, он пошлет их в ответ следующей странице,
если нет, то массив $_COOKIE так и останется пустым

На самом деле очень доходчиво на все ваши вопросы дан ответ здесь: http://ru.php.net/manual/en/function.setcookie.php
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.