Php 全局变量不断覆盖会话变量

Php 全局变量不断覆盖会话变量,php,session,Php,Session,下面是一个简单的测试代码,我已经从我现在面临的一个错误产生 session_start(); if(isset($_SESSION['views'])) $_SESSION['views'] = $_SESSION['views']+ 1; else $_SESSION['views'] = 1; $views = "hi"; echo "views = ". $_SESSION['views']; 我相信$views和$\u SESSION['views']是完全不同的事情。在本地测

下面是一个简单的测试代码,我已经从我现在面临的一个错误产生

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

$views = "hi";
echo "views = ". $_SESSION['views']; 
我相信
$views
$\u SESSION['views']
是完全不同的事情。在本地测试中,脚本首先给出正确的响应1,然后是2,然后是3,再继续

该漏洞仅存在于ipage主机上,每次都是相同的代码输出
hi


我缺少什么?

是的,理论上
$views
$\u SESSION['views']
应该是完全不同的东西。然而,在PHP中曾经有一个名为
register\u globals
的设置。它在5.3.0版中被标记为已弃用,并从5.4.0版中删除,但人们使用它的次数相当多,因为这样你就不必担心超全局和所有其他更复杂的内容,而只需键入你想要的内容

无论如何。尝试了解您的主机是否使用旧版本的PHP,以及此功能是否在服务器上激活。我打赌是的。最简单的方法是:将以下脚本放到服务器上并搜索
register\u globals

<?php
phpinfo();

register\u globals
很久以前在5.4.0上被删除了。谢谢。我对最新的版本不是很了解@TillHelge非常感谢,我看到register_globals是
上的
服务器@ɢ。一些主持人甚至曾经在管理面板中有一种方法来关闭它。启用此“功能”真的没有用,也很糟糕。是的,实际上此主机与会话相关的问题更多。这一个包括在内,它只是浪费了我3个小时来调试什么是错误的,他们提供了对php.ini的访问。