我遇到了一个奇怪的情况:
首先我将变量分配给会话然后我更改它。然后,当我更改变量时,会话会更改,即使我没有将值重新分配给会话:
示例(session1.php)
session_start();
$var_test = "first session value";
$_SESSION['var_test'] = $var_test;
echo "$_SESSION['var_test'];
// this will show "first session value"
第二个php文件(session2.php)
session_start();
$var_test = "second session value !!!";
echo $_SESSION['var_test'];
// this shows "second session value !!!";
在session1.php中它显示“第一个会话值”,这是非常好的,但在第二个php文件(session2.php)中显示“第二个会话值”。
即使我没有分配$ _SESSION ['var_test'] = $ var_test,它怎么会自动改变?
这是一个错误还是它的工作原理?
答案 0 :(得分:1)
这可能是由php ini中的register_globals = on引起的。 (如果您使用的是旧的PHP版本)
在.htaccess文件(位于文档根目录中)中尝试此操作:
php_flag register_globals off.
(如果您有权访问我们:在php.ini中更改它);
register_globals是一个糟糕的写入php应用程序的安全威胁。