PHP会话每1小时自动过期

时间:2014-06-10 16:30:30

标签: php session

我正在设置一个PHP会话,在登录后4小时有效。但是会话正好在四舍五入的时间到来(@ 1 AM,凌晨2点,凌晨3点等等......)

例如:如果在上午12点或12点30分登录,会话将在凌晨1点过期。

会话共享主机是否有默认设置?

  

我已尝试更改会话保存路径和会话生命但不使用。

这是登录页面中的代码。

// 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();

在其他页面中:

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
}

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

1 个答案:

答案 0 :(得分:1)

Session_start()必须先于其他所有内容。那可能是你的问题。无论如何,这种方式是非常不可靠的,所以最好把你自己的会话暂停:

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