【发布时间】: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')){ newSession}else{session is open!}跨度> -
看这里,具体是
session_set_cookie_params(),你要的参数是lifetime。 php.net/manual/en/ref.session.php -
@DIEGOCARRASCAL,如果您使用的是 PHP 会话,那就不是这样了。
-
您不需要弄乱唯一的会话 ID。使用 PHP 会话时,它会处理所有 ID,这些 ID 始终是唯一的。您真正想要的是会话在 1 小时后过期。