Как отключить 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 без использования функции, которую я создал? Поскольку функция, похоже, заставляет пользователя больше не выходить из системы.
Ответы
Ответ 1
Решение этой проблемы состояло в том, что мне нужно было установить правильный путь для удаления cookie, поскольку я отключил его из другого файла, который я изначально установил.
Я узнал, какой путь мне нужно использовать для неустановленного поиска файла cookie внутри моих браузеров, и как только я нашел cookie внутри моего браузера, путь был указан около файла cookie. Поэтому я затем устанавливаю путь к файлу cookie следующим образом:
setcookie("user_id", $user_id, time() - 1, "/social_learning/site_pages");
Последний параметр - это путь. И это сработало.
Мой оригинальный setcookie
выглядит следующим образом:
setcookie("user_id", $user_id, time() + 7200, "");
Ответ 2
Установите дату истечения срока действия файла cookie в прошлое (например, через одну секунду после эпоха).
setcookie("yourCookie", "yourValue", 1);
Это приведет к истечению срока действия файла cookie.
1
используется вместо 0
, потому что 0
устанавливает, что cookie истекает в конце сеанса.
Ответ 3
Есть несколько проблем безопасности, связанных с вашим кодом, однако, чтобы ответить на ваш вопрос, чтобы отключить cookie в php, все, что вам нужно сделать, это установить время истечения срока в прошлом:
setcookie("user_id", "", time()-10, "/");
"loginform.php" не является допустимым доменом, это может быть проблемой здесь.
Ответ 4
используйте этот код
setcookie("CookieName", "", time()-(60*60*24), "/");
работает каждый раз для меня на каждом веб-сайте.
Ответ 5
Посмотрите руководство по 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 для TRUE.
Ответ 6
В руководстве php вы можете удалить файл cookie, указав дату истечения срока в прошлом:
setcookie("key","",time()-3600);
В некоторых случаях вы должны указать путь и домен для аргументов.
Фактически, если вы назначите куки файл с пустой строкой, он также будет отменен:
setcookie("key","");