没有$ _GET的PHP'获取'数据?

时间:2013-04-05 11:52:47

标签: php parsing variables post get

我不确定这是否是预期的行为。但是,如果我在我的服务器上托管以下内容

<?php
print $stackoverflow; 
?>

我还有另一个包含以下内容的example.html:

<form action="http://pinguincyb.org/roc/opdracht1/lawl.php" method="POST">
 <input type="text" name="stackoverflow" value="example">
 <input type="submit" value="Submit">
</form>

页面打印'示例',这是正常的行为吗?不应该没有这些数据,直到我会做像

这样的事情
$stackoverflow = $_GET["stackoverflow"];

3 个答案:

答案 0 :(得分:6)

这是旧的弃用功能PHP,名为register globals。甚至删除了。

你应该避免它。

阅读有关Using Register Globals

的手册

如果你拥有它,你必须禁用它。你可以在php.ini,.htaccess,httpd.conf或.user.ini中完成(自PHP 5.3起)

答案 1 :(得分:0)

此功能已旧并已弃用。避免使用它,因为它是不安全的

答案 2 :(得分:0)

关于安全。

事实上,对于编写良好的应用程序,无论此设置是打开还是关闭都无关紧要。

编写良好的应用程序必须在使用前定义所有变量。如果遵循此规则,则register_globals不会造成任何伤害。

如果您有类似

的内容
$admin = FALSE;
if (check_admin()) {
    $admin = TRUE;
}

没有人能够成为愚蠢的管理员

/index.php?admin=1

即使register_globals已开启。

虽然无论如何都必须定义其他变量,只是为了程序的一致性。

这就是重点。