Как отключить 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","");