Php 如何取消设置全局变量?

Php 如何取消设置全局变量?,php,Php,即使没有其他代码,这也会不断从url中呼出城市 在页面上。 我假设这是一个全局变量 <?php echo "test"; echo $city; ?> 我已经启动并销毁了一个会话,以确保它不在会话中。 如果我更改变量,它将不会回显。 如果我将url?city=Boston更改为?city=Chicago,则它会更新 $city=$_GET[city];页面上不存在…页面的其余部分为空。最有可能的原因是$city已具有值,因为register\u glo

即使没有其他代码,这也会不断从url中呼出城市 在页面上。 我假设这是一个全局变量

    <?php 
echo "test";
     echo $city;
     ?>
我已经启动并销毁了一个会话,以确保它不在会话中。 如果我更改变量,它将不会回显。 如果我将url?city=Boston更改为?city=Chicago,则它会更新

$city=$_GET[city];页面上不存在…页面的其余部分为空。

最有可能的原因是$city已具有值,因为register\u globals设置处于启用状态。这意味着每个GET、POST和一些其他变量都在脚本中注册为全局变量。例如,如果像script.php?city=New+York这样打开脚本,那么代码中将定义一个值为New York的变量$city

如果不希望出现这种行为,则需要在php.ini中禁用register_globals

在此处阅读有关register\u globals的更多信息

最有可能的原因是$city已经有了一个值,即register\u globals设置处于启用状态。这意味着每个GET、POST和一些其他变量都在脚本中注册为全局变量。例如,如果像script.php?city=New+York这样打开脚本,那么代码中将定义一个值为New York的变量$city

如果不希望出现这种行为,则需要在php.ini中禁用register_globals


在这里阅读有关register_globals的更多信息

您描述的行为听起来像是启用了PHP配置选项。此选项导致在脚本启动期间将所有GET和POST变量以及可选cookie创建为全局变量。这是一个巨大的安全问题,因此自2002年4月PHP 4.2.0发布以来默认关闭,并且在PHP 5.4和2012年3月以后发布的版本中根本无法启用。事实上,它为您的系统打开是令人不安的,因为它表明您正在运行PHP5.3或更早版本,不再接收安全补丁

要禁用它,请将PHP升级到受支持的版本

如果不可能,请编辑PHP配置文件,找到设置register_globals=On或=1的行,然后将其删除。十多年来,这一方案一直没有得到推荐;不应启用它


没有安全的方法在运行时禁用register_globals。使用ini_集禁用它不起作用,因为它在脚本启动之前生效,并且无法安全地删除它创建的所有变量,因为这些变量有时可能会覆盖系统全局变量。唯一安全的方法是完全关闭它。

您描述的行为听起来像是启用了PHP配置选项。此选项导致在脚本启动期间将所有GET和POST变量以及可选cookie创建为全局变量。这是一个巨大的安全问题,因此自2002年4月PHP 4.2.0发布以来默认关闭,并且在PHP 5.4和2012年3月以后发布的版本中根本无法启用。事实上,它为您的系统打开是令人不安的,因为它表明您正在运行PHP5.3或更早版本,不再接收安全补丁

要禁用它,请将PHP升级到受支持的版本

如果不可能,请编辑PHP配置文件,找到设置register_globals=On或=1的行,然后将其删除。十多年来,这一方案一直没有得到推荐;不应启用它


没有安全的方法在运行时禁用register_globals。使用ini_集禁用它不起作用,因为它在脚本启动之前生效,并且无法安全地删除它创建的所有变量,因为这些变量有时可能会覆盖系统全局变量。唯一安全的方法是完全关闭它。

这简单意味着您不会向我们展示您的全部代码!只需显示您的完整代码!我想你得到的是:$city=$\u GET[city];这是你的代码!除非它是隐形的$城市从来没有定义过!你从这个脚本中得到了什么输出?另外,在文件顶部添加错误报告:并告诉我们您是否收到任何错误。没有显示任何错误。这很简单,意味着您没有向我们显示您的全部代码!只需显示您的完整代码!我想你得到的是:$city=$\u GET[city];这是你的代码!除非它是隐形的$城市从来没有定义过!你从这个脚本中得到了什么输出?在你的文件顶部添加错误报告:并告诉我们你是否有任何错误。没有错误显示。哇,如果真的是这样,那太疯狂了,我从来没有听说过这方面的任何事情。我甚至不知道这是可能的/存在的。谢谢…只是在开发时暂时使用这个服务器…它是免费的托管。哇,如果真的是这样,那太疯狂了,我从来没有听说过这方面的任何事情。我甚至不知道这是可能的/存在的。谢谢…只是在开发时暂时使用这个服务器…它是免费的。
<?php
        unset($GLOBALS[_SERVER]);
        echo $city;
        ?>