销毁在子目录中不起作用的cookie
Destroy cookie not working in sub directory
我想我可能对 cookie 不了解。当我点击一个按钮但 cookie 保留时,我试图销毁 cookie。我知道 cookie 的说明必须在 html 代码之前,所以我创建了一个没有 html 代码的新 php 页面,logout.php:
<?php
if (isset($_COOKIE['pseudocookie'])) {
setcookie('pseudocookie', '', time()-300);
}
if(session_id() == '') {
session_start();
}
session_destroy();
session_unset();
header('Location: ../index.php'); ?>
我正在使用一个简单的按钮从 index.php 调用页面 :
<input type="button" id="ButSignout" value="Sign out" onclick="window.location.href='pages/logout.php'" />
我做了一些测试,php 页面加载良好,如果我尝试直接从 index.php 删除 cookie,它会起作用。我错过了什么?提前致谢。
Cookie 的创建方式:
setcookie('pseudocookie','Pseudo cookie',time()+$expire, null, null, false, true);
当我在没有 header 的 logout.php 中尝试此代码时,我可以看到打印的 cookie 的新值。
if (isset($_COOKIE['pseudocookie'])) {
//setcookie('pseudocookie', '', time()-300);
echo "test";
setcookie('pseudocookie','Cookie cookie',time()+3600);
echo $_COOKIE['pseudocookie'];
unset($_COOKIE['pseudocookie']);
}
但是当我回到 index.php 打印 cookie 的地方时,它显示了他的先前值。似乎在重新加载 index.php 时,cookie 会自动获取其先前的值,尽管 index.php 代码中没有 setcookie...
http://php.net/manual/en/function.setcookie.php
我认为问题可能出在您创建 cookie 的方式上。您使用了 null
$path 而不是 /
,因此该 cookie 在 /pages
可能不可用,因此您的 if (isset($_COOKIE['pseudocookie']))
条件在 /pages/logout.php
.
中失败
您可以通过在 if isset 中回显来验证这一点。
我想我可能对 cookie 不了解。当我点击一个按钮但 cookie 保留时,我试图销毁 cookie。我知道 cookie 的说明必须在 html 代码之前,所以我创建了一个没有 html 代码的新 php 页面,logout.php:
<?php
if (isset($_COOKIE['pseudocookie'])) {
setcookie('pseudocookie', '', time()-300);
}
if(session_id() == '') {
session_start();
}
session_destroy();
session_unset();
header('Location: ../index.php'); ?>
我正在使用一个简单的按钮从 index.php 调用页面 :
<input type="button" id="ButSignout" value="Sign out" onclick="window.location.href='pages/logout.php'" />
我做了一些测试,php 页面加载良好,如果我尝试直接从 index.php 删除 cookie,它会起作用。我错过了什么?提前致谢。
Cookie 的创建方式:
setcookie('pseudocookie','Pseudo cookie',time()+$expire, null, null, false, true);
当我在没有 header 的 logout.php 中尝试此代码时,我可以看到打印的 cookie 的新值。
if (isset($_COOKIE['pseudocookie'])) {
//setcookie('pseudocookie', '', time()-300);
echo "test";
setcookie('pseudocookie','Cookie cookie',time()+3600);
echo $_COOKIE['pseudocookie'];
unset($_COOKIE['pseudocookie']);
}
但是当我回到 index.php 打印 cookie 的地方时,它显示了他的先前值。似乎在重新加载 index.php 时,cookie 会自动获取其先前的值,尽管 index.php 代码中没有 setcookie...
http://php.net/manual/en/function.setcookie.php
我认为问题可能出在您创建 cookie 的方式上。您使用了 null
$path 而不是 /
,因此该 cookie 在 /pages
可能不可用,因此您的 if (isset($_COOKIE['pseudocookie']))
条件在 /pages/logout.php
.
您可以通过在 if isset 中回显来验证这一点。