如何严格设置php中session过期时间
2个回答
展开全部
设定过期时间参数, 主要是设定session.gc_maxlifetime 的参数即可, 再保险一点的设定, 就设定下面这两个参数.
ini_set('session.cookie_lifetime', 0); // 可用print_r(session_get_cookie_params()); 观察
ini_set('session.gc_maxlifetime', 3600); // 可用echo ini_get("session.gc_maxlifetime"); 观察
session_cookie_lifetime 设为0 的话, 代表等到browser 才把此cookie 清掉.(session 和browser cookie 是有相关的)
下面给你一段源码参考session过期时间
下述源码转载自: Cross-Browser Session Starter
<?php
function start_session($expire = 0)
{
if ($expire == 0) {
$expire = ini_get('session.gc_maxlifetime');
} else {
ini_set('session.gc_maxlifetime', $expire);
}
if (empty($_COOKIE['PHPSESSID'])) {
session_set_cookie_params($expire);
session_start();
} else {
session_start();
setcookie('PHPSESSID', session_id(), time() + $expire);
}
}
?>
使用方式
于程式最上方加入: start_session(600); // 代表600 秒后会过期(取代原本session_start())
如果要再延长过期时间, 只要再做修改即可.
但是有个问题要注意, 就是PHP 的session 预设是存成file, 所以/tmp 可能会因这样设定而爆掉(档案太多), 通常解法是把session 存进DB/memcache 中.
---------------
至于如何严格的设置这里我给你提供方案
首先登录后设置session有效10分钟
然后用户有任何动左重置成10分钟
10分钟的原因是避免查看长篇文章突然session失效重新登录
ini_set('session.cookie_lifetime', 0); // 可用print_r(session_get_cookie_params()); 观察
ini_set('session.gc_maxlifetime', 3600); // 可用echo ini_get("session.gc_maxlifetime"); 观察
session_cookie_lifetime 设为0 的话, 代表等到browser 才把此cookie 清掉.(session 和browser cookie 是有相关的)
下面给你一段源码参考session过期时间
下述源码转载自: Cross-Browser Session Starter
<?php
function start_session($expire = 0)
{
if ($expire == 0) {
$expire = ini_get('session.gc_maxlifetime');
} else {
ini_set('session.gc_maxlifetime', $expire);
}
if (empty($_COOKIE['PHPSESSID'])) {
session_set_cookie_params($expire);
session_start();
} else {
session_start();
setcookie('PHPSESSID', session_id(), time() + $expire);
}
}
?>
使用方式
于程式最上方加入: start_session(600); // 代表600 秒后会过期(取代原本session_start())
如果要再延长过期时间, 只要再做修改即可.
但是有个问题要注意, 就是PHP 的session 预设是存成file, 所以/tmp 可能会因这样设定而爆掉(档案太多), 通常解法是把session 存进DB/memcache 中.
---------------
至于如何严格的设置这里我给你提供方案
首先登录后设置session有效10分钟
然后用户有任何动左重置成10分钟
10分钟的原因是避免查看长篇文章突然session失效重新登录
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询