Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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/4/video/2.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
将所有GET请求存储在单个变量PHP中_Php_Variables_Post_Get - Fatal编程技术网

将所有GET请求存储在单个变量PHP中

将所有GET请求存储在单个变量PHP中,php,variables,post,get,Php,Variables,Post,Get,我试图将发送到站点的所有变量存储在一个变量中(仅用于日志记录) 因此,如果用户访问www.mysite.com并使用?id=4&auth=230984721839 我想获取这两个get并将它们存储在一个变量中,比如$get 我试着: $gets = print_r($_GET); $posts = print_r($_POST); 但它没有起作用。这可能吗?我不想让用户知道我正在捕获这些 我也想抢帖子了 $\u服务器['QUERY\u STRING']。看 这将为您提供未解析的查询,因此您可以

我试图将发送到站点的所有变量存储在一个变量中(仅用于日志记录)

因此,如果用户访问www.mysite.com并使用?id=4&auth=230984721839

我想获取这两个get并将它们存储在一个变量中,比如$get

我试着:

$gets = print_r($_GET);
$posts = print_r($_POST);
但它没有起作用。这可能吗?我不想让用户知道我正在捕获这些


我也想抢帖子了

$\u服务器['QUERY\u STRING']
。看


这将为您提供未解析的查询,因此您可以捕获任何可能对日志记录有用的无效URL。

首先,您可能会意识到所有参数,包括GET和POST参数,都收集在
$\u REQUEST

第二,不要使用
print\r
。这将打印出变量,而不会给出任何合理的结果。相反,只要说

$params = $_REQUEST;
如果你想要原始数据,那么你可以在@MichałŠrajer的答案(get)和评论(POST)中获得它。所以

您可以添加一个标志,告诉它返回结果,而不是输出结果

$gets = print_r($_GET, true);
$posts = print_r($_POST, true);
但是,您可能希望查看关联数组

更新

根据您对问题的评论,我想您确实希望:

$gets = $_SERVER['QUERY_STRING'];
$posts = file_get_contents('php://input');

如果希望
$\u GET
$\u POST
都作为查询字符串,可以执行以下操作:

$gets = http_build_query($_GET);
$posts = http_build_query($_POST);

通过这段代码,您可以获取任何POST或get值,然后—也许—将它们放入数组中供以后使用

    foreach ($_REQUEST as $key => $value ) {
        ##Do what you want here - may be push values into array here
    }

出于存储目的,还有另一种可能性,那就是使用$\u GET数组

$data = serialize($_GET);
然后在数据库中存储
$data

例如,如果get字符串是
?foo=bar

您将得到以下字符串
a:1:{s:3:foo;s:3:bar;}


您可以使用
unserialize($data)反序列化它

您希望
$get
的内容是什么样子的?@jondavidjohn嗯,我希望它与发送时完全一样。因此,如果sent id=3&auth=1,我希望它只显示在
$\u SERVER
中,其中一个值可能具有您想要的值。执行
var\u dump($\u服务器)
查看其中的内容。我想这是
$\u服务器['QUERY\u STRING']
或其他东西。@Michael这也会抓取帖子吗?@jdadi:POST变量不是查询字符串的一部分,所以,不。我也想抓取帖子变量!有一个单独的变量
$HTTP\u RAW\u POST\u DATA
。另外,您可能对
$\u SERVER['REQUEST\u METHOD']
感兴趣,它会告诉您使用了什么方法。我认为
http\u get\u REQUEST\u body
不是一个标准的PHP函数。docs页面显示它位于
pecl_http
中。出于日志目的,最好获取未分析的数据以捕获任何非法查询。
$data = serialize($_GET);