我试图在一个变量中存储发送到站点的所有变量(仅用于记录目的。)
因此,如果用户访问www.mysite.com并加上?id = 4& auth = 230984721839
我想抓住这两个GET并将它们存储在一个变量中,例如$ gets
我在尝试:
$gets = print_r($_GET);
$posts = print_r($_POST);
但它没有用。这甚至可能吗?我不希望用户知道我正在捕捉这些。
我也想抓住POST!
答案 0 :(得分:7)
您可以向print_r添加一个标记,告诉它返回结果而不是输出结果。
$gets = print_r($_GET, true);
$posts = print_r($_POST, true);
但是,您可能希望查看serializing关联数组。
<强>更新强>
根据您对问题的评论,我想您真的想要:
$gets = $_SERVER['QUERY_STRING'];
$posts = file_get_contents('php://input');
答案 1 :(得分:5)
如果您希望$_GET
和$_POST
都作为查询字符串,则可以执行以下操作:
$gets = http_build_query($_GET);
$posts = http_build_query($_POST);
答案 2 :(得分:2)
$_SERVER['QUERY_STRING']
。请参阅this。
这将为您提供未解析的查询,因此您可以捕获任何可能对记录目的有用的无效URL。
答案 3 :(得分:2)
首先,您可能会意识到所有参数(包括GET和POST参数)都是在$_REQUEST
中收集的。
其次,请勿使用print_r
。那将打印变量,而不是给你任何明智的结果。相反,只需说出
$params = $_REQUEST;
如果您想要原始数据,那么您可以在@MichałŠrajer的回答(GET)和评论(POST)中获得它。所以,
$get = $_SERVER['QUERY_STRING'];
$post = file_get_contents("php://input");
答案 4 :(得分:1)
通过此代码,您可以获取任何POST或GET值,然后 - 可以将它们放入数组中供以后使用
foreach ($_REQUEST as $key => $value ) {
##Do what you want here - may be push values into array here
}
答案 5 :(得分:1)
为了存储目的,还有另一种可能性,它是serialize
$ _GET数组。
$data = serialize($_GET);
然后将$data
存储在数据库中。
例如,如果您的获取字符串为?foo=bar
你得到这个字符串a:1:{s:3:"foo";s:3:"bar";}
您可以使用unserialize($data);