0

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

<?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"];
4

3 回答 3

6

这是 PHP 已弃用的旧功能,称为register globals。甚至被删除。

你应该避免它。

阅读有关使用寄存器全局变量的手册

如果你有它,你必须禁用它。您可以在 php.ini、.htaccess、httpd.conf 或 .user.ini 中执行此操作(自 PHP 5.3 起)

于 2013-04-05T11:53:43.577 回答
0

关于安全。

事实上,对于编写良好的应用程序,此设置是否打开并不重要。

一个编写良好的应用程序必须在使用前定义它的所有变量。如果遵循这条规则,任何register_globals人都无法造成任何伤害。

如果你有类似的东西

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

没有人能傻傻地成为管理员

/index.php?admin=1

即使 register_globals 开启。

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

这才是重点。

于 2013-04-05T12:12:57.120 回答
0

此功能已过时且已弃用。避免使用它,因为它不安全

于 2013-04-05T11:55:42.273 回答