PHP会话超时

PHP会话超时

当用户登录时,我正在创建一个会话:

$_SESSION['id'] = $id;

如何在X分钟的会话上指定超时,然后在达到X分钟后执行功能或页面重定向?

编辑:我忘了提到由于不活动我需要会话超时。


天涯尽头无女友
浏览 382回答 3
3回答

蝴蝶刀刀

首先,存储用户上次发出请求的时间<?php&nbsp; $_SESSION['timeout'] = time();?>在后续请求中,检查他们提前多久提出请求(本例中为10分钟)<?php&nbsp; if ($_SESSION['timeout'] + 10 * 60 < time()) {&nbsp; &nbsp; &nbsp;// session timed out&nbsp; } else {&nbsp; &nbsp; &nbsp;// session ok&nbsp; }?>

忽然笑

当会话到期时,数据不再存在,所以类似于if&nbsp;(!isset($_SESSION['id']))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;header("Location:&nbsp;destination.php"); &nbsp;&nbsp;&nbsp;&nbsp;exit;}只要会话不再有效,它就会重定向。您可以使用session.cookie_lifetime设置会话cookie的有效时间ini_set("session.cookie_lifetime","3600");&nbsp;//an&nbsp;hour编辑:如果由于安全问题(而不是方便)计时会话,请使用接受的答案,如下面的评论所示,这是由客户控制的,因此不安全。我从未将此视为安全措施。

蛊毒传说

首先检查会话是否尚未创建,如果没有创建会话。在这里我只设置1分钟。<?php&nbsp; &nbsp;&nbsp;&nbsp;if(!isset($_SESSION["timeout"])){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$_SESSION['timeout']&nbsp;=&nbsp;time(); &nbsp;&nbsp;&nbsp;}; &nbsp;&nbsp;&nbsp;$st&nbsp;=&nbsp;$_SESSION['timeout']&nbsp;+&nbsp;60;&nbsp;//session&nbsp;time&nbsp;is&nbsp;1&nbsp;minute?><?php&nbsp; &nbsp;&nbsp;if(time()&nbsp;<&nbsp;$st){ &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;'Session&nbsp;will&nbsp;last&nbsp;1&nbsp;minute'; &nbsp;&nbsp;}?>
打开App,查看更多内容
随时随地看视频慕课网APP