【问题标题】:PHP browser does not delete cookies [duplicate]PHP浏览器不删除cookies [重复]
【发布时间】:2017-02-14 07:50:20
【问题描述】:

我正在做一个登录系统,但是我当然希望他们能够注销,这让我遇到了一个大问题,我设置的cookie无论如何我都不想被删除,我已经尝试了很多方法来删除它。

--- 登录.php

<!DOCTYPE html>
<html>
<head>
    <title>Website</title>
    <link rel="stylesheet" type="text/css" href="../css/style.css"/>
</head>
<body>
    <header><p> Lost Story </p></header>
    <div id="nav">
        <ul>
            <li><a href="../index.php">Home</a></li>
            <li><a href="register.php">Register</a></li>
            <li><a href="../downloads.html">Downloads</a></li>
            <li><a href="../forums.html">Forums</a></li>
            <li><a href="../donate.html">Donate</a></li>
            <li><a href="../vote.html">Vote</a></li>
                <div id="right">
                <?php
                    if(isset($_COOKIE['LoggedIn']) &&   !empty($_COOKIE['LoggedIn'])) {
                    echo "<li><a href=\"logout.php\">Log Out</a></li>";
                    } else {
                        echo "<li><a href=\"login.php\">Log in</a></li>";
                    }
                ?>
                </div>
        </ul>
    </div>
    <div id="content">
    <?php

    echo var_dump($_COOKIE['LoggedIn']);

    if(isset($_COOKIE['LoggedIn']) && !empty($_COOKIE['LoggedIn'])) {
        echo "<label> You are already logged in, you do not need to again. </label>";
    } else {
        echo "<div id=\"form\">
        <form action=\"login.php\" method=\"POST\">
            <label>
            <br>Username:<br>
                <input type=\"text\" name=\"name\">
            </label>
            <label>
            <br>Password:<br>
                <input type=\"password\" name=\"pass\">
        </label>
        <label>
            <br>
                <input type=\"submit\" name=\"submit\">
        </label>
        </form> 
    </div>";
    }

$LoggedIn = false;

ERROR_REPORTING(E_ALL);
include_once('dbconnection.php');

if($_SERVER['REQUEST_METHOD'] == "POST") {

$user = htmlspecialchars($_POST['name']);
$pass = htmlspecialchars($_POST['pass']);

$once = false;

if(!isset($user) || !isset($pass)) {    
    echo "<p> Please insert all the data </p>";
} else {
    $sql = "SELECT * FROM persons"; 
    $result = mysqli_query($mysqli, $sql);

    if(mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {
            if($row["username"] === $user && $row["pass"] === md5($pass)) {
                echo "<br><label> Logged into " .$user . "</label>";
                $once = true;
                $LoggedIn = true;
                setcookie("LoggedIn", $LoggedIn == true ? $user : "", time() + (86400 * 30), "/");

            }
        }
        if($once == false ) {
            echo "<br><label>No data found, please insert correct data</label>";
                $once = true;
            }

        $once = false;
    } else {
    echo "No results found";
    }   
}
}
?>

    </div>
    </div>
  <footer> Website copyright etc </footer>
</body>

对于我的 logout.php 我有这个

<?php 

if(isset($_COOKIE['LoggedIn']) && !empty($_COOKIE['LoggedIn'])) {
    setcookie('LoggedIn', '', time()-3600, '/');
    header("Location: ../index.php");
} else {
    echo "no";
}
?>

我不太确定它为什么不想删除 cookie,所以希望你能帮助我。

【问题讨论】:

  • 1:您不需要回显 var_dump。 2:您没有取消设置 cookie 的代码。
  • @MikeVelazco 我去的每个 stackoverflow 帖子都告诉我在过去设置 cookie 以取消它

标签: php cookies


【解决方案1】:

当您想删除您的 cookie 时,您不能只删除它们。 您必须在过去创建 cookie...

<?php
// set the expiration date to one hour ago
setcookie("TestCookie", "", time() - 3600);
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1);
?>

【讨论】:

  • 我明白了,谢谢你为未来提供有用的信息,你的技能不错!
【解决方案2】:
    $past = time() - 3600;
    setcookie("LoggedIn", gone, $past);
    header("Location: index.php"); exit();

【讨论】:

    猜你喜欢
    • 2017-09-16
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 2023-04-02
    • 2015-07-21
    • 2017-07-07
    • 1970-01-01
    相关资源
    最近更新 更多