了解PHP文件的工作原理(查询字符串的自动解码?)

了解PHP文件的工作原理(查询字符串的自动解码?),php,Php,我正在调试一个我以前从未见过可操作的PHP文件(不是我的代码),但据说它可以工作 myfile.php的示例代码片段: <html> <body> <p> <? echo $Year; ?> </p> </body> </html> 从连接的方式来看,代码似乎设置为从查询字符串(HTTP GET)中提取年份: 这应该在以前起作用,但现在不起作用了 是否有PHP设置来控制这一点?这是PHP版本中禁

我正在调试一个我以前从未见过可操作的PHP文件(不是我的代码),但据说它可以工作

myfile.php
的示例代码片段:

<html>
<body>
<p>
<?
    echo $Year;
?>
</p>
</body>
</html>


从连接的方式来看,代码似乎设置为从查询字符串(HTTP GET)中提取年份:

这应该在以前起作用,但现在不起作用了


是否有PHP设置来控制这一点?这是PHP版本中禁用的“功能”吗?我从未见过GET变量在
$\u GET

之外使用,看起来以前的服务器设置了register globalon

注意:从PHP 5.3.0开始,此功能已被弃用,并从PHP 5.4.0开始删除

与其更改服务器配置以支持不推荐的和不安全的功能,不如通过访问
$\u GET
全局:

<?php 
$Year = isset($_GET['Year']) ? $_GET['Year'] : null;
?>

<html>
<body>
<p>
<?php
    echo htmlspecialchars($Year);
?>
</p>
</body>
</html>



PHP指令
register\u globals
将打开/关闭一个功能,自动将查询字符串解码为同名的全局变量。在许多人看来,这是一个可怕的想法,因为变量的出现可能没有明显的来源或价值

在PHP4.2中,它一度默认为
,但改为
。您仍然可以在PHP.INI中启用它。从PHP5.3开始,它就被弃用,并在PHP5.4中删除

如果您的代码正在工作,但现在不工作,请在版本(到PHP5.4)中查找更改,或者检查PHP.ini中的内容


在任何情况下,如果您正在查看代码,现在可能是更改对
$\u GET
的引用,并禁用
register\u globals

正确,这是一个“功能”。谢天谢地,它已经不在我们身边了。谢谢-我每天都不使用PHP,所以我不知道它叫什么。我会尽快记下答案