gpt4 book ai didi

php - 我应该使用 PHP Superglobals 还是 Filter Input 来检索 $_GET 数据?

转载 作者:可可西里 更新时间:2023-10-31 22:42:53 27 4
gpt4 key购买 nike

我真的很讨厌全局变量——也许是因为我是 C# 程序员,但是当我在 PHP 中工作时,每次我不得不做这样的事情时我都会咬紧牙关:

$strUsername = $_GET['username'];

是的,我过于简单化了,是的,我正确地清理了所有这些。事实上,对于我构建的框架,几乎在执行开始时就捕获了所有超全局变量,并从那里开始进行依赖注入(inject)。

我在 PHP 手册中遇到过这个函数(你真的每天都能学到新东西):filter_input_array()。

所以现在,从技术上讲,我可以这样做而不是从 GET 超全局中获取所有内容:

$GETdata = filter_input_array(INPUT_GET);

.... 诸如此类,诸如 POST、REQUEST 等。我的问题是:我应该使用 filter_input_array 来避免超全局变量的祸害,还是有一些理由坚持使用它们而忘记关于使用 filter_input 函数?其他人对此有何经验?

编辑:我忘记了一件事 - filter_input 函数对您对超全局变量所做的任何脚本级修改视而不见,所以如果我这样做:$_GET['cheese'] = 'puff';稍后尝试执行 filter_input(INPUT_GET, 'cheese'); 将返回 null。这很好,因为我依赖注入(inject)所有内容,但如果他们没有意识到,它可能会在以后让某些人措手不及。

最佳答案

使用 filter_input_array 仍在使用超全局数组,因为它仍在从超全局数组之一获取数据。

从这些数组之一获取数据没有错,这确实是实际获取数据的唯一方法。无论您在什么地方使用它,您只需要确保对其进行转义即可。

用于 html 的 htmlentities、用于 pdo 的准备字符串、用于 mysql_ 函数的 mysql_real_escape_String 等...

关于php - 我应该使用 PHP Superglobals 还是 Filter Input 来检索 $_GET 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5665813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com