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