PHP-foreach影响会话值 - php

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 />';

当我在某些虚拟主机上运行此代码时,其输出正常。

Session content
test
array
something
array end

Session content after foreach: Session content

但仅在首次执行时(创建会话时)。当我第二次执行此代码(会话已创建)时,其输出如下所示:

Session content 
test 
array 
something
array end

Session content after foreach: array end

我不知道变量$ test如何影响$ _SESSION [test]。

参考方案

我敢打赌,您使用的是全局寄存器,这意味着,如果您有一个名为test的会话变量,则在执行$test时它将变为一个名为session_start()的全局变量。然后,循环将更改$test的值,该值是对会话变量的全局引用。

请参见Using Register Globals和register_globals directive。

基本上,这是一个很好的课程,为什么您不应该使用寄存器全局变量。在这种情况下,名称冲突可能是无害的,但您可能会通过这种方式潜在地产生巨大的问题,甚至容易受到攻击。

php session header()重定向后丢失 - php

这是我第一次尝试创建会话。另外,成功登录后,我使用header()函数重定向页面,但是在重定向的页面上,我不再有会话。有代码:建立工作阶段:function userLogin($user){ session_start(); $_SESSION['username'] = $user; header("Location: /~…

PHP Memcached会话突然失效 - php

session.save_handler = memcached session.save_path = "127.0.0.1:11211" session.gc_maxlifetime = 86400 其余的标准。我希望自上次用户访问该页面以来,该会话至少可以保留86400秒,即,如果我在5分钟后启动了一个会话并访问了该页面,则该会话应…

php Singleton类实例将在多个会话中保留吗? - php

举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…