PHP & # 39;得到# 39;& # 39;没有$_GET的数据


PHP 'get's' data without $_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"];

这是一个过时的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是打开的

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