【问题标题】:PHP Session Timing Out SoonPHP 会话即将超时
【发布时间】:2021-06-30 01:00:18
【问题描述】:

我正在开发一个基于 PHP 角色的应用程序,我还必须在其中维护会话。一旦用户登录,他将被重定向到我管理会话的界面,因为用户 ID 和密码将与角色匹配。如果不匹配,他将被重定向到如下登录。

if (!isset($_SESSION['user_login']))
{
    header("Location:index.php");
}
else
{
    if((time()-$_SESSION['expire']) > 365*24*60*60)
    {
        session_destroy();
    }
    else{
    //user would stay logged in
    }
} 

这也与数据表交互,其中每当会话超时时,它都会为表抛出错误:

datatables 警告表 id= - 为第 0 行第 0 列 tn/4 请求未知参数“0”

我认为如果我增加会话超时,这不会是一个负担。我尝试了所有可能的方式,但都以失败告终。

  • 增加 php.ini session.gc_maxlifetime
  • 按页面覆盖 php.ini 为 ini_set('session.gc_maxlifetime', 31536000)
  • 编辑 MultiPHP INI 编辑器

除了本地的,似乎没有什么可以工作。请指教。

更新(会话和 cookie 如何从登录中构建):

if(!empty($_POST["remember_me"]))
{
    setcookie ("user", $_POST["userid"], (time() + (10 * 365 * 24 * 60 * 60)));
    setcookie ("pass", $_POST["password"], (time() + (10 * 365 * 24 * 60 * 60)));
}
else
{
    if(isset($_COOKIE["userid"]))
    {
        setcookie ("userid", "");
    }
    if(isset($_COOKIE["password"]))
    {
        setcookie ("password", "");
}

if (!session_id()) session_start();
$_SESSION['user_login'] = $userid;

$_SESSION['expire'] = time();

header('Location: user_interface.php');

【问题讨论】:

  • 您是否将 PHP 会话与 Cookie 会话混合使用? PHP 会话的生命周期应该很短。
  • 如果你想让你的会话过期,你不必自己维护那个时间。 stackoverflow.com/questions/520237/… 详细介绍了如何正确操作。
  • @MarkusZeller 我认为是的。请检查更新。
  • 我不确定设置 cookie 是否正常工作,然后在相同的标头范围内进行重定向。所以我猜,cookie 永远不会被设置。
  • 我猜另一件事是使用 PHP superglobal $_SESSION 完全错误。您应该改为$_COOKIE

标签: php jquery session


【解决方案1】:

经过这么多尝试,我们必须在 .htaccess 上将会话路径更改为“/tmp”。如果应用托管在共享主机中,这就是它的工作方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-05
    • 2011-10-17
    • 2011-04-05
    • 2010-12-11
    • 2019-06-28
    相关资源
    最近更新 更多