【问题标题】:PHP redirect using cookies and headers使用 cookie 和标头的 PHP 重定向
【发布时间】:2011-06-16 01:03:17
【问题描述】:

我正在学习 PHP,并尝试根据是否设置了 cookie 来重定向页面,所以下面是我用来在 首页

上设置 cookie 的代码
<?php
setcookie("test","logged in",time()+60,'/');
?>

现在在测试页面上我删除了 cookie 但它没有被删除 下面是代码

<?php
setcookie("test", 0, time()-(60*60*24*7));

if(isset($_COOKIE['test']))
{
    echo "u had logged in";
}
else
header("Location: index.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>

</body>
</html>

到底是什么问题?

【问题讨论】:

    标签: php cookies redirect header


    【解决方案1】:

    Cookie 仅在页面传输到浏览器时设置,并且仅在作为 HTTP 请求的一部分发送到服务器时读取。

    这样:

    1. 如果您删除一个 cookie,它不会消失,直到下一个页面加载。

    2. 如果设置了 cookie,则在加载下一页之前无法读取该值。

    处理此问题的常用方法是设置/删除 cookie,然后执行重定向。

    【讨论】:

    • 请注意:不要简单地重新加载同一页面,因为如果有人禁用了 cookie,这将导致循环重定向。
    • 我的建议是将用户发送到您设置 cookie 但不产生输出且开销最小的空页面,然后使用标题将位置更改为包含需要 cookie 的内容的页面设置。
    • 重新加载后发现问题依旧。因此,在设置 cookie 时,我在设置过期后删除了正斜杠“/”(用于设置路径)并且它起作用了。我不太明白那个斜线有什么问题?
    【解决方案2】:

    对 cookie 所做的更改仅在刷新时对服务器可见。如果您重新加载测试页面,您应该不会看到“已登录”文本。

    【讨论】:

    • 重新加载后发现问题依旧。因此,在设置 cookie 时,我在设置过期后删除了正斜杠“/”(用于设置路径)并且它起作用了。我不太明白那个斜线有什么问题?
    猜你喜欢
    • 2016-03-05
    • 2013-08-22
    • 2012-02-18
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 2015-11-09
    相关资源
    最近更新 更多