【问题标题】:Emulating HTTP POST using command line curl and exporting output to text file使用命令行 curl 模拟 HTTP POST 并将输出导出到文本文件
【发布时间】:2010-10-02 04:10:55
【问题描述】:

如何使用 curl 模拟 HTTP POST 请求并在文本文件中捕获结果?我已经有一个名为 dump.php 的脚本:

<?php
  $var = print_r($GLOBALS, true);
  $fp = fopen('raw-post.txt','w');
  fputs($fp,$var);
  fclose($fp);
?>

我做了一个简单的测试:

curl -d 'echo=hello' http://localhost/dump.php

但我没有看到我在输出文件中转储的数据。我原以为它会出现在其中一个 POST 数组中,但它是空的。

[_POST] => Array
    (
    )

[HTTP_POST_VARS] => Array
    (
    )

【问题讨论】:

  • 按照 Evan 的建议,将其更改为 $_GLOBALS 而不是 $GLOBALS,现在没有输出
  • 删除了 curl -d 选项中的刻度线,现在 POST 变量在输出文件中可见。感谢埃文的帮助!
  • 不客气,弗朗西斯,很抱歉我不知道这个问题。 ;-)

标签: php arrays curl


【解决方案1】:

您需要使用$_GLOBALS 而不是$GLOBALS

此外,您可以这样做而不是使用输出缓冲:

$var = print_r($_GLOBALS, true);

true 作为第二个参数提供给print_r 将返回结果,而不是自动打印。

【讨论】:

  • 将其更改为 $_GLOBALS 但没有输出
【解决方案2】:

如果您只是想捕获 POST 数据,请为您的 dump.php 文件执行类似的操作。

<?php
    $data = print_r($_POST, true);
    $fp = fopen('raw-post.txt','w');
    fwrite($fp, $data);
    fclose($fp);
?>

所有 POST 数据都存储在 $_POST 变量中。此外,如果您还需要 GET 数据,$_REQUEST 将同时保存。

【讨论】:

  • 将 $_GLOBALS 替换为 $_REQUEST,输出为:Array ( )
  • $_GLOBALS 会同时包含 _POST 和 _GET 数组,但是当我执行上面的 curl 命令时,它什么都不包含。
【解决方案3】:

从 curl 命令行中删除刻度线 ('):

curl -d hello=world -d test=yes http://localhost/dump.php

【讨论】:

    猜你喜欢
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    相关资源
    最近更新 更多