创建一个具有唯一 ID 1 小时的会话 - PHP
Posted
技术标签:
【中文标题】创建一个具有唯一 ID 1 小时的会话 - PHP【英文标题】:Creating a session with a unique ID for 1 hour - PHP 【发布时间】:2016-11-16 13:27:05 【问题描述】:我正在尝试为用户创建一个持续 1 小时的会话 ID。
用户登录一次 - 生成随机 ID - 添加到会话中。
用户在 1 小时内再次登录,使用相同的 Session ID。
如果用户在 1 小时后登录,则生成一个新 ID。
到目前为止,我有这个
session_start();
//create random sid
$today = date('YmdHi');
$startDate = date('YmdHi', strtotime('2012-03-14 09:06:00'));
$range = $today - $startDate;
$rand = rand(0, $range);
$sid= ($startDate + $rand);
//first time user
if(isset($_SESSION['sessionid']))
$_SESSION['sessionid'] = $sid;
//visiting user
else
$_SESSION['sessionid'] = $_SESSION['sessionid'];
echo $_SESSION['sessionid'];
如何添加 1 小时的超时?我见过使用 cookie 的例子。我希望能够只使用服务器端会话?
有什么想法吗?
【问题讨论】:
只是好奇:你为什么要这样做? -->$_SESSION['sessionid'] = $_SESSION['sessionid']
.
您必须获取用户名和密码之类的内容并将其存储,然后检查该组合是否存在于任何会话中,如果存在,请检查会话是否“活动”(if(($startDate + 1 hour) > date('YmdHi')) newSessionelsesession is open!
跨度>
看这里,具体是session_set_cookie_params()
,你要的参数是lifetime
。 php.net/manual/en/ref.session.php
@DIEGOCARRASCAL,如果您使用的是 PHP 会话,那就不是这样了。
您不需要弄乱唯一的会话 ID。使用 PHP 会话时,它会处理所有 ID,这些 ID 始终是唯一的。您真正想要的是会话在 1 小时后过期。
【参考方案1】:
如果您希望将随机 ID 附加到一小时后刷新的会话,只需存储该会话上次生成的时间。
例如:
session_start();
function regenerate()
$_SESSION['code'] = uniqid();
$_SESSION['code_time'] = time();
if (empty($_SESSION['code']) || time() - $_SESSION['code_time'] > 3600)
//if there's no code, or the code has expired
regenerate();
echo "Your code is " . $_SESSION['code'] . " it was generated on " . date('m/d/Y h:i:s a', $_SESSION['code_time']);
【讨论】:
把3600
改成10
看10秒后刷新。
谢谢。我只需要在第一个条目页面上有这个吗?如何将此值带到第二页(第一页上的用户点击第二页的 url - 会话必须保持不变)?
您需要在使用该代码的每个页面上include
此代码。因此,如果用户访问page1.php
,然后一小时后他访问page2.php
,并且您希望更新代码,则在 page1 和 page2 上都需要此代码。【参考方案2】:
如果您希望会话在第一次访问后 600 秒过期:
<?php
$lifetime=600;
session_set_cookie_params($lifetime);
session_start();
?>
如果您希望会话在用户最近一次访问后 600 秒过期:
<?php
$lifetime=600;
session_start();
setcookie(session_name(),session_id(),time()+$lifetime);
?>
文档:http://php.net/manual/en/book.session.php
【讨论】:
仅供参考。无需弄乱ID。 PHP 在上面的代码中为你处理了所有这些。 对我帮助很大以上是关于创建一个具有唯一 ID 1 小时的会话 - PHP的主要内容,如果未能解决你的问题,请参考以下文章