首先,我听说有些网络服务器允许你用$ a而不是$ _GET [a]来获取参数,这不是这里的情况。
无论如何,我必须达到多次,所以我不是每次都使用$ _GET [a]来代替$ a = $ _GET [a]。在<?php ?>
中的单个php标记中,这是一个问题,我应该绝对使用变量吗?这有关系吗?
另一件事是我的PHP文件在我的HTML中真的很乱,我想知道多重获取是否重要?(不应该,我只是担心)
感谢。
答案 0 :(得分:1)
您仅使用$a
而非$_GET['a']
(或$_POST['a']
)引用的内容是一项称为register_globals
的旧功能。这个功能很危险,导致代码混乱,因此在PHP 5.3中被认为已弃用,最后在PHP 5.4中被删除。
然后,在脚本中的任何地方使用$_GET['a']
可能会导致问题,因为您永远不会信任用户输入(所有内容都来自$_GET
,$_POST
,$_REQUEST
,$_COOKIE
以及来自$_FILES
或$_SERVER
的部分内容。建议执行$a = sanitize($_GET['a']);
之类的操作(sanitize
函数不存在,具体取决于您期望的值类型,您应该检查所得到的是整数或有效日期,或者其他什么,取决于你的需要)。从现在开始,您应该停止引用$_GET['a']
并使用刚刚创建的新清理变量$a
。因为如果你总是使用$_GET['a']
,很可能你忘了在某个地方消毒它。
此外,在将此已清理的变量发送到SQL查询之前,您应该将其转义或在预准备语句中使用它以避免SQL injections。在将其输出到html供用户查看之前,请使用htmlspecialchars
来避免XSS attacks。
最后,关于将多个php块与html块混合在一起,这只是出于维护原因而不好,因为从长远来看它将是一个完整的混乱。尝试将您发送给用户的html与php代码分开。尝试阅读有关MVC pattern (Model-View-Controller)的内容(此链接可能过于复杂,或者您现在还没有看到刚开始使用php的实用程序(至少我没看到它如何变得更好)比混合html与PHP,所需的所有复杂性,但尝试掌握它背后的想法)。
答案 1 :(得分:0)
首先,我听说有些网络服务器允许你用$ a而不是$ _GET [a]来获取参数,这不是这里的情况。
这是一个名为register_globals
的PHP配置设置。它不安全,不应该使用。有关详细信息,请参阅this question。
您可以根据需要多次访问$_GET
数组中的元素,但不会导致问题。但是,如果要将$_GET
数组(或任何其他用户提交的数据)的元素打印到页面,则应在打印之前通过htmlspecialchars()
等运行它以防止XSS漏洞。< / p>
答案 2 :(得分:0)
使用变量是您的首选,以确定它无关紧要。但如果多次使用同一个变量,变量就是前进的方式。
<?php echo htmlspecialchars($_GET['a']);?>
使用变量意味着它可以再次重复使用,特别是如果您添加了额外的代码,这意味着只需为所有实例编辑一个变量。
<?php $a = htmlspecialchars($_GET['a']);
echo $a;
echo $a;
echo $a;
echo $a;
?>