2013-07-02 2 views
0

Мой Логин проверить сценарий -Неожиданное поведение при проверке куки

if($pass == $hash) setcookie("cookiename",$cookieVal);

Это сохраняет куки в Broswer. Нет проблем с этим; Я сам это проверил.

Однако на другой странице, когда я проверяю, существует ли файл cookie, он возвращает false.

if(isSet($_COOKIE['cookiename'])) echo "Cookie is set"; else echo "Not set";

Приведенный выше код печатает "Не установлено" в окне Broswer.

Кроме того, если я пытаюсь echo $_COOKIE['cookiename'];, то Ouput ошибка Примечание: Undefined индекс: cookiename

Видимо браузер (Firefox) не может определить, печенье, хотя я могу видеть это представить, когда я проверяю мой Broswer-х вкладку параметров! Позже я также пробовал в Chrome и IE - такую ​​же проблему.

Что я делаю неправильно?

Обновление: Когда я добавил if(isSet($_COOKIE['cookiename'])) echo "Set"; в конец скрипта проверки входа, было обнаружено мое cookie (напечатан «Set»)! Но он не обнаруживается ни на одной другой странице.

+2

Вы не увидите «неопределенный индекс» с вызовом 'isset()', так как избегать этого уведомления является одной из его целей. Что-то еще не так ... –

+0

Другие причины, по которым cookie может не вернуться - имя домена отличается - вы не указали путь, поэтому проверьте путь к файлу cookie в Firefox. –

+0

Можете ли вы рассказать об этих двух адресах? (тот, где установлен файл cookie, и тот, где он будет считаться), я подозреваю, что путь по умолчанию запрещает отправку cookie на вторую страницу. – complex857

ответ

1

По умолчанию файлы cookie доступны только по пути, в котором они указаны. Вы должны увидеть столбец Path в Firebug/Chrome, который покажет вам путь. Чтобы сделать cookie доступным во всем домене (не включая субдомены), используйте setcookie("cookiename", $cookieVal, strtotime('+1 year), '/');

+0

Yup. Работает. Большое спасибо. Но каков будет мой третий параметр (время), если я хочу, чтобы файл cookie устанавливался только на время сеанса? – gdebojyoti

+1

@gdebojyoti Нет проблем! Из документации setCookie: 'Если установлено значение 0 или опущено, файл cookie истекает в конце сеанса (когда браузер закрывается).' - http://php.net/setcookie – Webnet

+0

Только сам наткнулся на него. 'setcookie (« cookiename », $ cookieVal, 0, '/');« Но, спасибо, во всяком случае. :-) Теперь все работает нормально. Это решает проблему с печеньем. – gdebojyoti

Смежные вопросы