2013-02-11 2 views
2

Так у меня есть этот код на мой index.php:Cookie не будет удалять

<?php if(isset($_POST['cookie'])) { setcookie("RememberMe", "Yes", time()+1209600); } ?> 

Если пользователь проверил запомнить меня боксировать, то он установит печенье с именем RememberMe в течение 2 недель. Эта часть работает нормально.

Теперь проблема, с которой я столкнулся, заключается в удалении этого файла cookie, когда они выходят из системы.

При нажатии выхода из системы, они получают перенаправлены logout.php, который имеет следующий код:

<?php include_once('config.php'); 
include_once('functions.php'); 

unset($_COOKIE['RememberMe']); 
setcookie("RememberMe", "", time()-3600); 
$_SESSION = array(); session_destroy(); 


?> 

<meta http-equiv="refresh" content="0;../index.php"> 

, но по какой-то странной причине, что не будет удалять куки? Есть идеи о том, почему?

+0

Не полагаться на мета перенаправлением. Он может быть заблокирован в некоторых браузерах - не связан с конкретным вопросом. – Lion

+0

Является ли ваш сервер в нужном часовом поясе? Что происходит, когда вы используете 'time() - 36000'? –

+0

Ничего не меняет @WaleedKhan. Это все еще остается. Lion - Что еще является лучшим способом перенаправить их? – Tenatious

ответ

2

Возможно, вам захочется проверить, установлен ли путь к файлу cookie. По умолчанию PHP задает путь cookie к каталогу, в котором он установлен, и он будет недоступен (и не может быть удален) из разных мест.

Еще несколько советов:

  • нет никакой необходимости дезактивировать $_COOKIE и $_SESSION
  • вместо перенаправления с помощью мета-тега перенаправления с HTTP заголовками:

    header('Location: /index.php'); // or whatever is the path you want to redirect to 
    
+0

Спасибо. Будет использовать метод перенаправления :) – Tenatious

0

Не чистейшая, но Проверьте часовой пояс правильно Убедитесь, что вы правильно удаления содержимого диска печенье (чувствительно к регистру) В противном случае все они перезапись печенье будет ядерное оружие все равно Так ...

SetCookie ('mycookie') // блокирует куки-файл с пустой записью

+0

Почему вы считаете, что часовой пояс на сервере имеет значение? – Oswald

+0

Плохой прошлый опыт, я думаю. Оглядываясь назад, нужно быть нерелигиозным, но у меня были хосты с серверами, установленными в 1990-х годах. Поэтому всегда лучше не доверять значениям по умолчанию, если не проверено :), –

+0

Даже время сервера не имеет значения. 'setcookie' отправляет клиенту поле HTTP-заголовка' Set-Cookie', клиент проверяет атрибут 'expires' этого поля заголовка и использует эту информацию, чтобы решить, отправлять ли cookie на сервер при следующем запросе. Так технически, нет способа удалить cookie. Вы можете только сказать клиенту: «Я не хочу, чтобы вы отправляли этот файл cookie мне», но окончательное разрешение делается клиентом. – Oswald

0

Cookie иногда отмена может требовать того же значения времени, что и они были установлены.

setcookie("RememberMe", "", time()-1209600); 
0

удалить эту строку

unset($_COOKIE['RememberMe']);

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