Уничтожить куки не работает в подкаталоге

1

Я думаю, что может быть что-то, что я не получаю от куки. Я пытаюсь уничтожить cookie, когда я нажимаю кнопку, но cookie остается. Я знаю, что инструкции для файлов cookie должны быть до html-кодов, поэтому я создал новую php-страницу без HTML-кода, logout.php:

<?php

if (isset($_COOKIE['pseudocookie'])) {
    setcookie('pseudocookie', '', time()-300); 
}

if(session_id() == '') {
    session_start(); 
}

session_destroy();
session_unset();

header('Location: ../index.php'); ?>

И я вызываю страницу из index.php с помощью простой кнопки:

<input type="button" id="ButSignout" value="Sign out" onclick="window.location.href='pages/logout.php'" />

Я сделал несколько тестов, php-страница хорошо загружена, если я пытаюсь удалить файл cookie непосредственно из index.php, он работает. Что мне не хватает? Заранее спасибо.


Файл cookie был создан с помощью:

setcookie('pseudocookie','Pseudo cookie',time()+$expire, null, null, false, true);

Когда я пытаюсь выполнить этот код в logout.php без заголовка, я могу увидеть новое значение печатаемого файла.

if (isset($_COOKIE['pseudocookie'])) {
    //setcookie('pseudocookie', '', time()-300); 

    echo "test";
    setcookie('pseudocookie','Cookie cookie',time()+3600);
    echo $_COOKIE['pseudocookie'];
    unset($_COOKIE['pseudocookie']);
}

Но когда я возвращаюсь к index.php, где печатается файл cookie, он показывает свое предыдущее значение. Кажется, что cookie автоматически получает свое предыдущее значение, когда index.php перезагружается, хотя в коде index.php нет setcookie...

  • 0
    Как вы создали cookie? (Показать этот код)
  • 0
    setcookie ('pseudocookie', 'Pseudo cookie', time () + $ expire, null, null, false, true); $ expire - переменная времени (int)
Теги:
cookies
destroy

1 ответ

0
Лучший ответ

http://php.net/manual/en/function.setcookie.php

Я считаю, что проблема может возникнуть из-за того, как вы создали cookie. Вы использовали путь null $ вместо /, так что cookie может быть недоступен на /pages и поэтому условие if (isset($_COOKIE['pseudocookie'])) не работает в /pages/logout.php.

Вы можете проверить это, повторив внутри if iset.

  • 0
    Я уже пробовал это сделать, но, чтобы быть уверенным, что я только что сделал это снова: я вижу эхо в тесте isset, но cookie все еще не удален. Я просто попытался создать cookie без каких-либо параметров по прошествии времени, но безуспешно.
  • 0
    Тогда проблема в обратном. Вы устанавливаете cookie только для каталога страниц, а не для каталога /. Используйте / в обоих вызовах setcookie, и это должно работать нормально
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню