Del*_*uxe 2 php foreach session
foreach循环如何影响会话变量?
session_start();
$_SESSION[test] = "Session content";
echo $_SESSION[test].'<br />';
$test_array = array("test", "array", "something", "array end");
foreach($test_array as $test){
echo $test.'<br />';
}
echo '<br />Session content after foreach: '.$_SESSION[test].'<br />';
Run Code Online (Sandbox Code Playgroud)
当我在一些Web主机上运行此代码时,其输出正常.
Session content
test
array
something
array end
Session content after foreach: Session content
Run Code Online (Sandbox Code Playgroud)
但只在第一次执行时(创建会话时).当我第二次执行此代码(会话已创建)时,其输出如下所示:
Session content
test
array
something
array end
Session content after foreach: array end
Run Code Online (Sandbox Code Playgroud)
我不知道变量$ test如何影响$ _SESSION [test].
cle*_*tus 13
我敢打赌你正在使用注册全局变量,这意味着如果你有一个名为的会话变量test,它将成为$test你执行时命名的全局变量session_start().然后,您的循环将更改值$test,该值是对会话变量的全局引用.
请参见使用Register Globals和register_globals指令.
基本上这是一个很好的教训,为什么你不应该使用寄存器全局变量.在这种情况下,名称冲突可能是无害的,但你可能会以这种方式产生巨大的问题,甚至是攻击的漏洞.
| 归档时间: |
|
| 查看次数: |
986 次 |
| 最近记录: |