在代码中:
<?php
session_start();
$_SESSION['id'] = 14;
if(isset($_GET['id']))
{
$id = $_GET['id'];
}
else
{
$id = $_SESSION['id'];
}
echo $id;
echo "<br>";
echo $_SESSION['id'];
?>
Run Code Online (Sandbox Code Playgroud)
为什么回显的第二个值总是等于GET变量(假设有一组)?这是一个配置错误还是我错过了什么?
我的魔法水晶球说你打开了register_globals设置.通过电话检查phpinfo()
何时register_globals打开,$foo并且$_SESSION['foo']是彼此的引用,但仅当$ foo在全局范围内时.这意味着为其中任何一个分配值,导致另一个更新.将它们视为完全相同的变量.
那个环境很古老.如果我没记错的话,$ foo和$ _SESSION ['foo']之间的引用只会在以下之一之后建立:
您应该强烈考虑禁用register_globals.像这样的意外程序行为是不鼓励设置的原因,并最终完全从php中删除.
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |