0

首先,我听说一些网络服务器允许您使用 $a 而不是 $_GET[a] 来访问参数,这里不是这种情况。

无论如何,我必须达到多次,所以我每次都使用 $_GET[a] 而不是 $a = $_GET[a]。在单个 php 标签中<?php ?>,这是一个问题,我应该绝对使用变量吗?有关系吗?

另一件事是我的 php 文件在我的 html 中真的被打乱了,我想知道多次获取是否有关系?(不应该,我只是担心)

谢谢。

4

3 回答 3

1

您所指的只是使用$a而不是$_GET['a'](或$_POST['a']太)是一个旧功能,称为register_globals. 这个特性很危险并且会导致代码混乱,因此它在 PHP 5.3 中被认为已弃用,最终在 PHP 5.4 中被删除。

然后,$_GET['a']在脚本中到处使用可能会导致问题,因为您永远不应该相信用户输入(所有来自$_GET, $_POST,的东西$_REQUEST$_COOKIE以及一些来自$_FILESor的东西$_SERVER)。建议执行类似的操作$a = sanitize($_GET['a']);(该sanitize函数不存在,取决于您期望的值类型,您应该检查您得到的是整数,还是有效日期,或者其他什么,取决于您的需要)。从现在开始,您应该停止引用$_GET['a']并改用您刚刚创建的新净化变量$a。因为如果您一直在使用$_GET['a'],您很可能会忘记在某个地方对其进行消毒。

此外,在将这个经过清理的变量发送到 SQL 查询之前,您应该对其进行转义或在准备好的语句中使用它以避免SQL 注入。在将其输出为 html 供用户查看之前,请使用htmlspecialchars以避免XSS 攻击

最后,关于将多个 php 块与 html 块混合在一起,这仅出于维护原因而不利,因为从长远来看,这将是一团糟。尝试将您发送给用户的 html 与 php 代码分开。尝试阅读有关MVC 模式(Model-View-Controller)的一些内容(此链接可能太复杂了,或者您现在可能看不到该实用程序,适合刚开始使用 php 的您(至少我没有看到如何对于所需的所有复杂性,这比将 html 与 php 混合要好得多),但请尝试掌握其背后的想法)。

于 2013-06-18T22:48:47.723 回答
0

首先,我听说一些网络服务器允许您使用 $a 而不是 $_GET[a] 来访问参数,这里不是这种情况。

这是一个名为register_globals. 它不安全,不应使用。有关更多信息,请参阅此问题

您可以$_GET根据需要多次访问数组中的元素,这不会引起问题。但是,如果您将$_GET数组的元素(或任何其他用户提交的数据)打印到页面,您应该htmlspecialchars()在打印之前运行它或类似的操作,以防止 XSS 漏洞。

于 2013-06-18T22:34:45.240 回答
0

使用变量是您决定无关紧要的偏好。但是如果你多次使用同一个变量,变量是前进的方向。

<?php echo htmlspecialchars($_GET['a']);?>

使用变量意味着它可以再次重用,特别是如果您添加了额外的代码,这意味着只需为所有实例编辑一个变量。

<?php $a = htmlspecialchars($_GET['a']);

echo $a;
echo $a;
echo $a;
echo $a;

?>
于 2013-06-18T22:47:38.660 回答