PHP - Cookie не работает? - PullRequest
       3

PHP - Cookie не работает?

2 голосов
/ 16 декабря 2010

Почему я не могу удалить этот Cookie?

Когда пользователь входит в систему authenticate_user ().Когда пользователь выходит из системы, выполняется logout ().Когда класс запускается, статус генерируется с помощью update_status ().

Как убить куки-файл статуса?Независимо от того, что я пытаюсь, он существует, и пользователь не может выйти из системы.

[КОД УДАЛЕН]

Решено.

При удалении файла cookie необходимо указать, к каким каталогам файл cookie может получить доступ.

Not Deleted
setcookie("status", "", (time()+3600), '/');
setcookie("status", "", (time()-3600));

Deleted
setcookie("status", "", (time()+3600), '/');
setcookie("status", "", (time()-3600), '/');

Ответы [ 3 ]

1 голос
/ 16 декабря 2010

Является ли статус файлом cookie сеанса?Если это так, $_COOKIE['status'] не будет существовать.

Используйте session_destroy(), чтобы удалить его, сначала убедитесь, что у вас есть session_start() вверху страницы (возможно, именно поэтому у вас проблемы ссеансы не работают).

0 голосов
/ 16 декабря 2010

Это немного серой области.

Первое, что следует отметить, это то, что вы пытаетесь удалить cvookie, установив срок его действия час назад - но в каком часовом поясе работает ваш скрипт? И в каком часовом поясе находится клиент?

Кроме того, я видел поведение, которое, по-видимому, объясняется тем, что браузеры привязываются к файлам cookie, когда время истечения устанавливается впоследствии на дату в прошлом ( long в прошлом - не вещь часового пояса ).

Простое присутствие cookie НИКОГДА не должно рассматриваться как свидетельство аутентификации - это должно быть дескриптором данных, хранящихся на стороне сервера. Таким образом, решение состоит в том, чтобы перезаписать VALUE файла cookie до бессмысленного значения, а не изменить время его истечения.

0 голосов
/ 16 декабря 2010

Попробуйте вместо этого ...

setcookie("status", "", time()-3600, "");
...