如何设置具有过期时间的 php cookie 以及如果 cookie 存在如何将用户重定向到另一个页面 [关闭]

Posted

技术标签:

【中文标题】如何设置具有过期时间的 php cookie 以及如果 cookie 存在如何将用户重定向到另一个页面 [关闭]【英文标题】:how to set php cookie with a expiration time & if cookie exists how to redirect user to another page [closed] 【发布时间】:2013-10-28 18:04:20 【问题描述】:

当用户访问我的页面时,我想要index.php。它应该创建一个带有过期时间的 cookie,如果用户在 5 分钟内再次尝试访问该页面,他应该被重定向到显示 USER TIMEOUT 的页面。

index.php 应该创建一个 cookie

如果用户在 5 分钟内再次访问该页面,他/她应该会收到 USER TIMEOUT 消息。

【问题讨论】:

【参考方案1】:

在登录或创建 cookie 时使用此方法

setcookie("user", "User Name", time()+5*60);

setcookie() 方法的语法是-

setcookie(name, value, expire, path, domain); 

其中 expire 是 cookie 过期的时间,您可以通过在 time() 方法返回的值上再增加几秒来给出相对于当前时间的时间,name 是 cookie 的名称,通过它访问值,value 是值。请参阅文档here。

在其他页面上检查-

if (!isset($_COOKIE["user"]))
   header("Location:timeout.php");

应该在发送输出之前调用方法 setcookie() 和 header()。您可以使用的 header() 的替代方案(有点棘手) -

if (!isset($_COOKIE["user"]))
echo '<script type="text/javascript">
          document.location = "timeout.php";
      </script>';

这将使用 javascript 重定向页面。

index.php的内容-

<?php
session_start();
if(!isset($_SESSION['visited']))

   $_SESSION['visited'] = time();
   setcookie("user", "User Name", time()+5*60);

else

   if(!isset($_COOKIE["user"]))
      header("Location:timeout.php");

?>
<html><body>This is my page</body></html>

timeout.php的内容-

<?php
session_start();
unset($_SESSION['visited']);
?>
<html><body>Timeout, again go to <a href="index.php">main page</a></body></html>

【讨论】:

是 time() 将返回当前时间,在 5*60 秒+当前时间后 cookie 将过期 确保 header() 位于 PHP 页面的最顶部,并且之前没有输出任何 HTML。 @user2294087 是的,@allejo 说的是,header()setcookie() 应该在发送任何 HTML 输出之前调用。 @user2294087 等待 5 分钟让 cookie 过期,再次重新加载页面。或者减少过期时间 我认为您正在同一页面上创建和检查 cookie index.php?【参考方案2】:
if(!isset($_COOKIE["user"]))

$expire=time()+60*60*24*30;
setcookie("user", "Alex Porter", $expire);

//cookie for 5 mins
$time = time()+60*5;
setcookie("page_auth", "Alex Porter", $time);

else

if(isset($_COOKIE["page_auth"]))

    header('location:timeout.php');
    setcookie("user", "", time()-3600);


【讨论】:

以上是关于如何设置具有过期时间的 php cookie 以及如果 cookie 存在如何将用户重定向到另一个页面 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何严格设置php中session过期时间?

具有expor = 0的setcookie不会在浏览器关闭后失效

Session与Cookie的区别与联系

如何设置cookie的过期时间

如何严格设置php中session过期时间

php会话控制cookie/session