为什么会话无法识别cookie的手动更改?

时间:2015-07-01 19:57:52

标签: php

我正在努力完全理解会话,并且我进行了这个测试:

我的代码是:

test.php的

<?
@session_start();

if(isset($_SESSION['test'])) {

echo "test success";

}
?>

当我使用插件手动将我的cookie输入浏览器时:

PHPSESSID test

它无法识别它。

2 个答案:

答案 0 :(得分:1)

$ _ SESSION是一个&#34;超全球&#34; (可随处使用)使用唯一会话ID与cookie绑定的数组。

如果您想要引用Cookie值,那么您需要使用$ _COOKIE超全局数组。

您可以在此处详细了解超级全球:http://php.net/manual/en/language.variables.superglobals.php

$ _SESSION和$ _COOKIE如何在这里工作: http://php.net/manual/en/reserved.variables.cookies.php http://php.net/manual/en/reserved.variables.session.php

您无法使用此类浏览器在SESSION中设置值。 PHP是您唯一能够设置“测试”的地方。值的关键,如真或假。

session_start();

// You could assign this based on the value of a cookie
$_SESSION['test'] = true;

if ($_SESSION['test']) {
    // this is a test session
}

希望有所帮助。

答案 1 :(得分:1)

要查看更改Cookie的结果,请执行以下操作:

<?
@session_start();

if(session_id() == 'test') {
    echo "test success";
}

cookie包含会话ID,各个会话变量存储在服务器上,使用此ID和变量名作为键(默认配置使用以会话ID命名的文件)。