2014-07-03 98 views
0

下面是一个简单的测试代码,我从我现在面临的一个错误中产生。全局变量保持覆盖会话变量

session_start(); 
if(isset($_SESSION['views'])) 
$_SESSION['views'] = $_SESSION['views']+ 1; 
else 
$_SESSION['views'] = 1; 

$views = "hi"; 
echo "views = ". $_SESSION['views']; 

从什么,我相信$views$_SESSION['views']是完全不同的事情。在本地测试中,脚本首次给出正确的响应1然后2然后3继续。

的错误上的iPage主机只存在,there相同的代码给每个时间输出hi

我在想什么?

回答

1

是,在理论上$views$_SESSION['views']应该是完全不同的事情。但是,PHP中曾经有一种叫做register_globals的设置。它已在5.3.0版中被标记为不推荐使用,并已从版本5.4.0中删除,但人们使用了相当多,因为那样你就不必担心超全球植物和所有更多涉及的东西,键入几乎任何你想要的。

无论如何。尝试查明您的主机是否使用旧版本的PHP,以及服务器上是否启用了此功能。我敢打赌。做到这一点最简单的方法:把下面的脚本在服务器上搜索register_globals

<?php 
phpinfo(); 
+0

'register_globals'已经很长一段时间前取出,在5.4.0。 – Jon

+0

啊谢谢。我并不是最新版本的最新版本。 ;) –

+0

@TillHelge非常感谢,我看到了register_globals的'on'在服务器 –