Мне нужно выяснить, как отключить этот файл cookie. Все, что я пробовал до сих пор, не удалось.
Это то, как я в настоящее время ее отключает, и, похоже, это не работает.
setcookie("user_id", $user_id, time() - 7200);
Вот как я это установил:
setcookie("user_id", $user_id, time() + 7200);
У меня есть функция set_session_from_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, не используя функцию, которую я создал? Поскольку функция, похоже, заставляет пользователя больше не выходить из системы.
Установите дату истечения срока действия файла cookie на время в прошлом (например, через одну секунду после эпохи ).
setcookie("yourCookie", "yourValue", 1);
Это приведет к истечению срока действия файла cookie.
1
используется вместо 0
, потому что 0
устанавливает, что 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 для TRUE.
В руководстве php вы можете удалить файл cookie, установив дату истечения срока в прошлом:
setcookie("key","",time()-3600);
В некоторых случаях вы должны указать путь и домен для аргументов.
Фактически, если вы назначите куки-файл с пустой строкой, он также будет отменен:
setcookie("key","");