【问题标题】:PHP script to log the raw data of POST用于记录 POST 原始数据的 PHP 脚本
【发布时间】:2011-04-12 17:02:54
【问题描述】:

我正在使用 HTTP POST 向我的服务器发送数据。但是在服务器中,我没有收到数据。而且不知何故,我没有任何方法可以检查客户端的数据(或调试脚本)。但在客户端,我得到的是 HTTP 200,这意味着数据已发送。我也可以看到连接和数据发送成功。但是,登录服务器不包含数据(仅包含字节数)。

如何记录发送到服务器的原始 POST 数据?

仅供参考,这里的客户端是一个功能非常有限的嵌入式设备,所以这是一个问题。我无法检查“print_r”或“echo”。

【问题讨论】:

  • 如果你尝试 print_r($_POST) 会发生什么?
  • 不幸的是,我在客户端看不到这一点。所以,它不会起作用。
  • 您是否能够使用其他更强大的客户端(并且能够运行诸如 firebug ^^ 之类的东西)重现该问题?
  • 等待 - 所以它是一个封闭的服务器(您无法访问)您正在发送数据但您不知道为什么它没有显示?这是一个黑匣子问题——软件可能会对你的数据做任何事情,包括忽略它、将其存储在其他地方、对其进行编码、用它清理厨房水槽——在这种情况下,这不是 PHP 或 MySQL 问题。跨度>
  • @Rudi - 我不认为他在封闭的服务器上。只是任何调试信息只能输出到某些数据存储(SQL、文件、...)或调用者(无法显示该数据)的问题。

标签: php mysql post logging


【解决方案1】:

你可以试试sniffing the HTTP session

【讨论】:

    【解决方案2】:

    您可以通过以下方式查看 POST 数据内联(不用于生产)的内容:

    print_r($_POST);
    

    或者如果您想查看 POST、GET 和 COOKIE 数据:

    print_r($_REQUEST);
    

    如果您需要记录,因为客户端非常有限 - 尝试将 POST 数据输出到文件:

    file_put_contents("post.log", print_r($_POST, true));
    

    【讨论】:

    • 感谢 Rudi,我想 file_put_contents 是最好的选择。
    【解决方案3】:

    将 POST 数据写入文件:

    file_put_contents('/tmp/postdata.txt', var_export($_POST, true));
    

    【讨论】:

    • 虽然这只在调试时是可以接受的。永远不要让任何人将来自 $_POST 的任何内容直接写入现实世界应用程序中的某个文件...
    • 非常感谢 Sjoerd。我想这是最好的做法。既然鲁迪在你之前回答了同样的问题,所以我将不得不选择他的答案:(
    • 马丁,我明白了。我只会用它来调试
    • 太棒了!你节省了我数周的时间 :)
    猜你喜欢
    • 2017-12-06
    • 2023-03-28
    • 1970-01-01
    • 2012-09-22
    • 2015-01-02
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多