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

PHP会话每1小时自动过期一次,php,session,Php,Session,我正在设置一个PHP会话,使其在登录后4小时内有效。但会话将在四舍五入的时间(凌晨1点、凌晨2点、凌晨3点等)结束 例如:如果在凌晨12点或12点30分登录,会话将在凌晨1点正好过期 在共享主机中是否有会话的默认设置 我尝试过更改会话保存路径和会话寿命,但没有用 这是我登录页面时的代码 // server should keep session data for AT LEAST 4 hour ini_set(session.save_path, "/home/web/session"); i

我正在设置一个PHP会话,使其在登录后4小时内有效。但会话将在四舍五入的时间(凌晨1点、凌晨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
}
您能帮我解决这个问题吗?

会话\u 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

当然不是在设置会话参数之前!
$\u会话['LAST\u ACTIVITY']
是系统变量吗?$\u会话是一个超级全局变量,您只需保存用户上次登录的时间即可。因此,当4小时时,很容易检测到它。@robinp7720:我面临的问题是,会话值恰好每小时都是空的。因此,如果上述条件在4小时内不起作用,
ini_set(session.save_path,“/home/web/session”)
应该是
ini\u集(“session.save\u path”,“home/web/session”)对debian会话感兴趣\u save\u path需要垃圾收集器session.gc\u的附加值为1,以便gc从自定义会话文件夹中清除旧会话。但在你的情况下,它会被自动删除。您可能需要为此联系托管服务。@AbhikChakraborty:我正在使用自己的会话文件夹。它怎么会被自动删除呢?可能是just do as
session\u save\u path(“/home/web/session”)