Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php函数,用于将外部变量整理为单个对象,而不考虑GET或POST_Php_Http_Parameters_Add On - Fatal编程技术网

php函数,用于将外部变量整理为单个对象,而不考虑GET或POST

php函数,用于将外部变量整理为单个对象,而不考虑GET或POST,php,http,parameters,add-on,Php,Http,Parameters,Add On,我记得曾经看过其他人的PHP代码,他有一个函数或类方法,将所有GET和POST变量滚动到一个简单的旧对象中,然后可以传递给其他人。如果GET和POST中出现相同的名称-值对,POST将获胜 是否有一个编码良好的PHP插件可以做到这一点?您可以使用$\u REQUEST全局变量。当您的应用程序在web sapi(如CGI或web服务器模块)中运行时,它由默认情况下解释的PHP定义,而当您使用PHP编写基于web的应用程序时,应用程序就是这样。 $\u REQUEST是$\u GET和$\u POS

我记得曾经看过其他人的PHP代码,他有一个函数或类方法,将所有GET和POST变量滚动到一个简单的旧对象中,然后可以传递给其他人。如果GET和POST中出现相同的名称-值对,POST将获胜


是否有一个编码良好的PHP插件可以做到这一点?

您可以使用$\u REQUEST全局变量。当您的应用程序在web sapi(如CGI或web服务器模块)中运行时,它由默认情况下解释的PHP定义,而当您使用PHP编写基于web的应用程序时,应用程序就是这样。 $\u REQUEST是$\u GET和$\u POST中所有数据的关联数组,默认情况下定义。使用它不需要扩展名/librari。

您可以使用,但请注意,它包含
$\u GET
$\u POST
$\u COOKIE
的内容,并且该超全局变量的存在(和顺序,用于覆盖目的)取决于执行环境中的配置

如果这导致了问题,那么推出一个简单的版本可能是一个好主意,其关键是

$requestData = array_merge( $_GET, $_POST );

您可以以某种方式将其包装起来,也许提供额外有用的功能,例如自动应用<代码> TasSLASHESE()/<代码>使用<代码> MaGICHOXGETS ,提供缺省变量的缺省值等。

< P>我认为将<代码> $$GET与<代码> $POST 混淆是不好的做法。它们的用途完全不同,如果将它们平等对待,那么实际上就是误用了HTTP协议。如前所述,
$\u REQUEST
做您想要的,但有点不可预测。您可以轻松编写自己的全局函数来执行相同的操作:

function param($name, $default = null) {
  return isset($_POST[$name])
    ? $_POST[$name]
    : (isset($_GET[$name])
      ? $_GET[$name] 
      : $default);
}

但是真的。。这是一个糟糕的做法。

这是我的框架中的类,它在整个应用程序中处理全局变量。这里不处理变量

class stGlobal
{

}

在任何地方使用它

$myObj = stGlobal::getInstance();
合并这两个变量(或使用
$\u REQUEST
或相反)可能会导致安全缺陷,因为您无法确定其值的来源。因此,当访问
$\u请求['foobar']
时,您无法判断值是否通过URL、帖子正文或Cookie发送。这会使您的脚本易受攻击


因此,我建议你选择安全而不是舒适,并在你期望价值的地方使用这些变量
$\u GET
对于预期通过URL传递的参数,
$\u POST
对于通过POST传递的参数,
$\u COOKIE
对于COOKIE。

默认情况下,$\u请求也包含COOKIE数据,并且会根据配置进行不可预测的重新排序。只有当应用程序在不同的用户输入向量中放置不同级别的信任时,跨站点请求伪造漏洞才会成为问题。为了获得最大的安全性,所有用户输入向量都应该被视为天生不可信。鉴于这一事实,可以说合并变量实际上更安全,因为它消除了任何单个可信用户输入向量的不合理假设。我同意-GET请求不应该有副作用,而POST请求可能会更新或删除数据等。OP的策略消除了这一区别。这可能意味着,例如,一个蜘蛛在检查网站上的链接时,可能会删除一些数据。
$myObj = stGlobal::getInstance();