首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP会话每1小时自动过期一次。

PHP会话每1小时自动过期一次。
EN

Stack Overflow用户
提问于 2014-06-10 16:30:30
回答 1查看 1.9K关注 0票数 0

我正在设置一个PHP会话,在登录后4小时内有效。但是会话将在四舍五入的时间完全过期(@1 AM,2 AM,3 AM等)

如果在凌晨12点或12点30分登录,会话将在凌晨1点到期。

共享托管会话的中是否存在默认设置?

我试过更改会话保存路径和会话生命,但没有用。

这是我在登录页面时的代码。

代码语言:javascript
运行
复制
// server should keep session data for AT LEAST 4 hour
ini_set(session.save_path, "/home/web/session"); 
ini_set('session.gc_maxlifetime', 14400);
session_start();
$_SESSION['login'] = 1;
$_SESSION['sessionid']=session_id();

在其他几页中:

代码语言:javascript
运行
复制
if($_SESSION['login'] == 1  $_SESSION['sessionid']==session_id()) 
{ 
    echo "you are aleady logged in...";
}
else
{ echo "you are not logged in..." ; //this is occurring exactly every hour
}

你能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-10 16:32:24

Session_start()必须先于其他一切。那可能是你的问题。无论如何,这种方式是非常不可靠的,所以最好将您自己的会话超时设置为:

代码语言:javascript
运行
复制
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 14400)) {
    // last request was more than 30 minutes ago
    session_unset();     // unset $_SESSION variable for the run-time 
    session_destroy();   // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24146276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档