旧的PHP代码不适用于基本参数传输

时间:2013-08-05 20:56:13

标签: php

刚刚升级php,非常简单的样本无法正常工作

test.php的

 <?php 

 echo "$query";

 ?> 

当我打电话

test.php?query=5

应该显示

5

但我得到的是没有任何显示,这意味着$ query是''

您的评论欢迎

5 个答案:

答案 0 :(得分:2)

尝试使用

$query = $_GET['query'];

答案 1 :(得分:2)

它是一个新的安全功能。它曾经被称为寄存器全局变量。

http://php.net/manual/en/security.globals.php

您不必使用$ _GET,$ _POST或使用$ _REQUEST全局变量来获取此信息。

例如你的代码是

 <?php 

 echo $_GET['query'];

 ?> 

答案 2 :(得分:1)

在您以前的PHP中,register_globals指令处于启用状态,允许您将$ REQUEST数组的元素用作全局变量。这就是代码工作的原因。此功能在PHP 5.3.0中已弃用,已在PHP 5.4.0中删除:http://www.php.net/manual/en/ini.core.php#ini.register-globals

不要使用它。直接应用于$ _GET,$ _POST和$ _REQUEST数组。

What are register_globals in PHP?

答案 3 :(得分:1)

你的升级关闭了不安全,可怕和有臭味的register_globals。尽管你现在必须做的工作,你最好还是这样做。

您必须更改

的每个实例
$query

$_GET['query']

记录在“安全”下花费的时间。

答案 4 :(得分:0)

您需要使用$_GET

  

通过传递给当前脚本的关联变量数组   网址参数。

http://www.php.net/manual/en/reserved.variables.get.php

$query = $_GET['query'];