как отключить 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, не используя созданную мной функцию? Поскольку функция, похоже, приводит к тому, что пользователь больше не может выйти из системы.

Author: smottt, 2012-05-10

6 answers

Установите дату истечения срока действия файла cookie на время в прошлом (например, через одну секунду после эпохи , например).

setcookie("yourCookie", "yourValue", 1);

Это приведет к истечению срока действия файла cookie.

1 используется вместо 0, потому что 0 устанавливает срок действия файла cookie в конце сеанса.

 27
Author: Vulcan, 2016-07-26 21:54:16

Решение этой проблемы заключалось в том, что мне нужно было указать правильный путь для удаления файла 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, "");
 10
Author: arboles, 2017-02-09 11:07:08

Существует несколько проблем с безопасностью в отношении вашего кода, однако, чтобы ответить на ваш вопрос, чтобы удалить файл cookie в php, все, что вам нужно сделать, это установить время истечения срока действия в прошлом:

setcookie("user_id", "", time()-10, "/");

"loginform.php "это недопустимый домен, в этом может быть проблема здесь.

 6
Author: mohamed elbou, 2012-05-10 03:09:57

Используйте этот код

  setcookie("CookieName", "", time()-(60*60*24), "/");

Работает для меня каждый раз на каждом веб-сайте

 4
Author: Vaibhav Gautam, 2013-01-11 14:09:49

Посмотрите руководство по 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 для ИСТИННОГО.

 3
Author: Magento Guy, 2012-05-10 03:09:21

В руководстве по php вы можете удалить файл cookie, установив дату истечения срока действия в прошлом:

setcookie("key","",time()-3600);

В некоторых случаях вы должны указать путь и домен для аргументов.

На самом деле, если вы назначите файл cookie с пустой строкой, он также будет сброшен:

setcookie("key","");
 1
Author: Yinian Chin, 2012-05-10 03:14:40