Я думаю, что может быть что-то, что я не получаю о куки. Я пытаюсь уничтожить куки, когда нажимаю на кнопку, но куки остаются. Я знаю, что инструкции для файлов 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 …
http://php.net/manual/en/function.setcookie.php
Я полагаю, что проблема может быть связана с тем, как вы создали куки. Вы использовали null
$ путь вместо /
так что куки могут быть недоступны на /pages
и, следовательно, ваш if (isset($_COOKIE['pseudocookie']))
условие не выполняется в /pages/logout.php
,
Вы можете проверить это, повторив внутри if isset.
Других решений пока нет …