【问题标题】:PHP session not invalidated after destroy / reset, stays alive销毁/重置后PHP会话未失效,保持活动状态
【发布时间】:2016-08-25 11:57:15
【问题描述】:

我在我的服务器(php 5.4.0,apache)上发现了一个关于 php 会话处理的奇怪问题。

我有一个启动会话的函数,该会话包含以下代码,并且总是在我的应用程序中的任何其他内容之前调用:

static function startSession()
{
    $httponly = true;
    $secure = true;

    if (ini_set('session.use_only_cookies', 1) === FALSE) {
        exit();
    }

    session_name("my_session");

    $cookieParams = session_get_cookie_params();

    session_set_cookie_params(
        60*60,
        $cookieParams["path"],
        $cookieParams["domain"],
        $secure,
        $httponly
    );

    session_start();
}

然后有一个登录过程,它会做类似的事情:

$_SESSION['key1] = 'some value';

session_regenerate_id(true);

最后还有注销功能:

static function logout()
{
    $_SESSION = array();

    $params = session_get_cookie_params();

    setcookie(
        session_name(),
        '',
        time() - 42000,
        $params["path"],
        $params["domain"],
        $params["secure"],
        $params["httponly"]
    );

    return session_destroy();
}

现在的问题: 当我登录时会发生以下情况:

startSession();
...
$_SESSION['key1'] = 'some_value';
...

将来我会以某种方式调用:

logout();

session_destroy();返回 true,$_SESSION 被重置。一切都很好。

然后我通过再次发送会话 cookie 以请求一些信息来重新测试请求,并且会话再次处于活动状态。所有的信息都在那里。

在服务器上我可以看到生成的会话文件:

sess_ : 394B

我有以下会话设置:

ini_set('session.hash_function', 'sha512');
ini_set('session.entropy_file', '/dev/urandom');
ini_set('session.entropy_length', 256);
ini_set('session.use_trans_sid', 0);
ini_set('session.use_only_cookies', 1);
ini_set('session.cookie_lifetime', 0);
ini_set('session.use_strict_mode', 1);
ini_set('session.cache_limiter', 'nocache');

我的 session_save_path() 位于 /var/www/html/sites/....

我错过了什么或做错了什么?

提前致谢

丹尼斯

【问题讨论】:

    标签: php session cookies


    【解决方案1】:

    好的,我自己找到了解决方案。 我应该补充说,我正在使用目标 c 从 iOS 发送请求。

    对于所有请求,我都在发送带有请求的 cookie。

    问题是,注销没有发送 cookie。所以我要求注销功能。如前所述,所有请求都开始了一个会话。然后我重置会话并销毁它。

    这意味着: 请求登录 - 生成会话:abc123 请求注销 - 生成新会话:xyz456 - 注销会话 xyz456 - abc123 保持登录状态。

    所以我的建议是,请确保您正在销毁正确的会话 :)

    【讨论】:

      猜你喜欢
      • 2013-10-18
      • 2011-12-12
      • 1970-01-01
      • 2017-09-20
      • 2021-11-24
      • 2018-11-26
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      相关资源
      最近更新 更多