如何设置具有过期时间的 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 存在如何将用户重定向到另一个页面 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章