使用命令行curl模拟HTTP POST并将输出导出到文本文件

时间:2009-01-19 04:23:21

标签: php arrays curl

如何使用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
    (
    )

3 个答案:

答案 0 :(得分:2)

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

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

$var = print_r($_GLOBALS, true);

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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

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