【问题标题】:Store all GET requests in a single variable PHP将所有 GET 请求存储在单个变量 PHP 中
【发布时间】:2011-12-23 21:20:47
【问题描述】:

我正在尝试将发送到站点的所有变量存储在一个变量中(仅用于记录目的。)

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

我想获取这两个 GET 并将它们存储在变量中,例如 $gets

我在尝试:

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

但它没有工作。这甚至可能吗?我不想让用户知道我正在捕获这些。

我也想抢帖子!

【问题讨论】:

  • 您希望$gets 的内容是什么样的?
  • @jondavidjohn 好吧,我希望它与发送时完全一样。所以如果发送 id=3&auth=1 我希望它显示出来
  • 看看$_SERVER,其中一个值可能有你想要的。做var_dump($_SERVER) 看看里面有什么。我想是$_SERVER['QUERY_STRING'] 什么的。

标签: php variables post get


【解决方案1】:

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

$gets = print_r($_GET, true);
$posts = print_r($_POST, true);

但是,您可能希望改为查看 serializing 关联数组。

更新

根据你的问题,我想你真的想要:

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

【讨论】:

  • 出于日志记录的目的,最好获取未解析的数据以捕获任何非法查询。
【解决方案2】:

如果您希望 $_GET$_POST 作为查询字符串,您可以这样做:

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

【讨论】:

    【解决方案3】:

    $_SERVER['QUERY_STRING']。见this

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

    【讨论】:

    • @Michael 这也抓取 POST 吗?
    • @JDAudi:POST 变量不是查询字符串的一部分,所以,不是。
    • 我也想抓取 POST 变量!
    • 有一个单独的变量$HTTP_RAW_POST_DATA。另外,您可能对$_SERVER['REQUEST_METHOD'] 感兴趣,它会告诉您使用了什么方法。
    【解决方案4】:

    首先,您可能会意识到所有参数(包括 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
    【解决方案5】:

    通过此代码,您可以获取任何 POST 或 GET 值,然后 - 可能 - 将它们放入数组中以备后用

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

    【讨论】:

      【解决方案6】:

      为了存储目的还有另一种可能,就是serialize $_GET 数组。

      $data = serialize($_GET);
      

      然后您将$data 存储在您的数据库中。

      例如,如果您的获取字符串是?foo=bar

      你得到这个字符串a:1:{s:3:"foo";s:3:"bar";}

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

      【讨论】:

        猜你喜欢
        • 2011-06-21
        • 1970-01-01
        • 2015-01-15
        • 2021-09-07
        • 2011-07-10
        • 2020-06-18
        • 2012-06-29
        • 1970-01-01
        • 2019-08-17
        相关资源
        最近更新 更多