商店都得到一个变量PHP
请求我试图存储在一个变量发送到该网站的任何和所有的变量(只用于记录的目的。)商店都得到一个变量PHP
因此,如果用户去www.mysite。 ?COM和穿上ID = 4 & AUTH = 230984721839
我想抓住这两个的获取,并将它们存储在诸如$一个变量被
我尝试:
$gets = print_r($_GET);
$posts = print_r($_POST);
但它没有奏效。这甚至有可能吗?我不希望用户知道我正在捕获这些内容。
我也想抓住POSTs呢!
如果你想同时$_GET
和$_POST
作为查询字符串,你可以这样做:
$gets = http_build_query($_GET);
$posts = http_build_query($_POST);
+1这是另一个好方法 – Paulpro 2011-12-23 22:46:03
$_SERVER['QUERY_STRING']
。请参阅this。
这将为您提供未解析的查询,因此您可以捕获任何可能对记录目的有用的无效URL。
该死的我无法在PHP.net上找到它。谢谢! – 2011-12-23 21:24:47
@Michael做这个抢POSTs呢? – 2011-12-23 21:25:17
@JDAudi:POST变量不是查询字符串的一部分,所以没有。 – 2011-12-23 21:26:53
首先,您可能会意识到所有参数(包括GET和POST)都收集在$_REQUEST
中。其次,请勿使用print_r
。这将打印变量,而不会给你任何明智的结果。相反,只是说
$params = $_REQUEST;
如果你想的原始数据,那么你可以把它作为@MichałŠrajer的答案(GET)和评论(POST)。所以,
$get = $_SERVER['QUERY_STRING'];
$post = file_get_contents("php://input");
我不认为'http_get_request_body'是一个标准的PHP函数。文档页面说它在'pecl_http'中。 – 2011-12-23 21:29:02
哦,真的......我会换个说法 – Amadan 2011-12-23 21:35:18
您可以将标志添加到print_r告诉它,而不是返回输出它的结果。
$gets = print_r($_GET, true);
$posts = print_r($_POST, true);
但是,您可能想要查看serializing关联数组。
更新
根据对你的问题你的意见,我想你真的想:
$gets = $_SERVER['QUERY_STRING'];
$posts = file_get_contents('php://input');
为了记录目的,可能会更好地获得未解析的数据来捕获任何非法查询。 – 2011-12-23 21:33:10
@MichałŠrajer谢谢,我添加了一个更新到我的答案。 – Paulpro 2011-12-23 22:33:20
对于''php:// input''+1。 – 2011-12-23 22:46:29
通过此代码,您可以获取任何POST或GET值,然后 - 可以将它们放入数组中呃使用
foreach ($_REQUEST as $key => $value) {
##Do what you want here - may be push values into array here
}
为了存储的目的还有另一种可能性,那就是serialize
$ _GET数组。
$data = serialize($_GET);
然后您在您的数据库中存储$data
。
例如,如果你的GET字符串是?foo=bar
你得到这个字符串a:1:{s:3:"foo";s:3:"bar";}
您可以用过unserialize($data);
反序列化你想要什么'$ gets'的内容看起来像? – jondavidjohn 2011-12-23 21:23:04
@jondavidjohn好吧,我喜欢它发送的。所以如果发送id = 3&auth = 1,我希望它只显示 – 2011-12-23 21:23:50
查看'$ _SERVER',其中一个值可能有你想要的。做'var_dump($ _ SERVER)'看看里面有什么。我认为它是'$ _SERVER ['QUERY_STRING']'什么的。 – 2011-12-23 21:25:53