我不确定这是否是预期的行为。但是如果我在服务器上托管以下内容
<?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"];
这是一个过时的PHP特性,叫做全局寄存器。甚至删除。
你应该避免它。
阅读关于使用全局寄存器的手册
如果你有它,你必须禁用它。可以在PHP。ini, .htaccess, httpd.conf或。user.ini (PHP 5.3起)
此功能已过时,已弃用。避免使用它,因为它不安全
关于安全。
事实上,对于编写良好的应用程序来说,这个设置是打开还是关闭并不重要。
一个编写良好的应用程序必须在使用之前定义它的所有变量。如果遵循这一规则,任何register_globals
都不能造成任何伤害。
如果你有像
$admin = FALSE;
if (check_admin()) {
$admin = TRUE;
}
没有人可以成为管理员与愚蠢的
/index.php?admin=1
即使register_globals是打开的
尽管无论如何必须定义这些变量,只是为了程序的一致性。