检查是否存在会话(Nginx)

时间:2010-08-22 15:57:13

标签: php session nginx

我在PHP中有两个会话:

$_SESSION["session"]["key"] = md5 ($token . $userAgent . $ip);
$_SESSION["session"]["timeout"] = time ();

只想检查与nginx的会话,尝试此代码但未成功:

location / {
    if ($request_filename ~* "index.php") {
        break;
    }

    if ($http_cookie ~* "session") {
        break;
    }

    rewrite ^.+$ https://localhost/index.php last;
}

任何线索?

感谢。

1 个答案:

答案 0 :(得分:5)

一个cookie只保存会话ID,始终在session_start();创建一个id,因此如果您在脚本中调用该用户将始终拥有会话ID。

你最好的选择是添加第二个cookie:

setcookie('session_key',md5 ($token . $userAgent . $ip));

然后在nginx中:

if ($http_cookie ~* "session_key")
{
    break;
}

检查是否已设置该Cookie。

如果哈希是敏感的,那么这样做:

setcookie('session_key_active','1');

然后在Nginx:

if ($http_cookie ~* "session_key_active")
{
    break;
}

但这仍然很脆弱,总是检查服务器端值匹配!