как отключить cookie в PHP?
Мне нужно выяснить, как отключить этот файл cookie. Все, что я пробовал до сих пор, потерпело неудачу.
Вот как я сейчас его отключаю, и, похоже, это не работает.
setcookie("user_id", $user_id, time() - 7200);
Вот как я это установил:
setcookie("user_id", $user_id, time() + 7200);
У меня есть эта функция под названием set_session_from_cookie()
, которая проверяет, установлен ли файл cookie, и если он установлен, он запускает новый сеанс с использованием файла cookie.
Проблема в том, что когда я использую это на своей странице, я не могу выйти из системы. Я предполагаю, что это происходит потому, что я не могу отключить сессия.
Причина, по которой у меня есть эта функция, заключается в том, что если пользователь хочет, чтобы его запомнили после завершения сеанса, он может перезапустить сеанс, вызвав файл cookie.
function set_session_from_cookie()
{
if (isset($_SESSION['user_id'])) {
echo '';
} else {
$_SESSION['user_id']=$_COOKIE['user_id'];
}
}
Выход из системы:
<?php
require'core.php';
session_destroy();
setcookie("user_id", "", time() - 7200);
header('Location:/social_learning/site_pages/starter-template.php');
Я устанавливаю свой файл cookie со следующим кодом:
if ($rememberme == "on") {
$user_id = mysql_result($query_run, 0, 'id');
setcookie("user_id", $user_id, time() + 7200);
$_SESSION['user_id'] = $user_id;
redirect('home_page.php');
} else {
if ($rememberme == "") {
echo 'ok';
$user_id = mysql_result($query_run, 0, 'id');
echo $user_id;
$_SESSION['user_id'] = $user_id;
redirect('home_page.php');
}
}
Как я могу перезапустить сеанс, используя сохраненный файл cookie, не используя созданную мной функцию? Поскольку функция, похоже, приводит к тому, что пользователь больше не может выйти из системы.
6 answers
Установите дату истечения срока действия файла cookie на время в прошлом (например, через одну секунду после эпохи , например).
setcookie("yourCookie", "yourValue", 1);
Это приведет к истечению срока действия файла cookie.
1
используется вместо 0
, потому что 0
устанавливает срок действия файла cookie в конце сеанса.
Решение этой проблемы заключалось в том, что мне нужно было указать правильный путь для удаления файла cookie, так как я удалял его из другого файла, в котором я его изначально установил.
Я выяснил, какой путь мне нужно использовать для отмены, поискав файл cookie в файлах cookie моего браузера, и как только я нашел файл cookie в своем браузере, путь был указан рядом с файлом cookie. Поэтому я затем задаю путь к файлу cookie следующим образом:
setcookie("user_id", $user_id, time() - 1, "/social_learning/site_pages");
Последний параметр - это путь. И это работал.
Мой оригинал setcookie
выглядит так:
setcookie("user_id", $user_id, time() + 7200, "");
Существует несколько проблем с безопасностью в отношении вашего кода, однако, чтобы ответить на ваш вопрос, чтобы удалить файл cookie в php, все, что вам нужно сделать, это установить время истечения срока действия в прошлом:
setcookie("user_id", "", time()-10, "/");
"loginform.php "это недопустимый домен, в этом может быть проблема здесь.
Используйте этот код
setcookie("CookieName", "", time()-(60*60*24), "/");
Работает для меня каждый раз на каждом веб-сайте
Посмотрите руководство по php для получения информации о setcookie
Http://php.net/manual/en/function .setcookie.php
Эти примечания должны объяснить процесс:
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
Файлы cookie должны быть удалены с теми же параметрами, с которыми они были установлены . Если аргумент value является пустой строкой или FALSE, а все остальные аргументы соответствуют предыдущему вызову setcookie, то файл cookie с указанным именем будет удален с удаленного клиента. Это внутренне достигается путем установки значения "удалено" и истечения срока действия на один год в прошлом.
Поскольку установка файла cookie со значением FALSE приведет к попытке удалить файл cookie, вы не должны использовать логические значения. Вместо этого используйте 0 для FALSE и 1 для ИСТИННОГО.
В руководстве по php вы можете удалить файл cookie, установив дату истечения срока действия в прошлом:
setcookie("key","",time()-3600);
В некоторых случаях вы должны указать путь и домен для аргументов.
На самом деле, если вы назначите файл cookie с пустой строкой, он также будет сброшен:
setcookie("key","");