3

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

3 回答 3

2

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

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

$var = print_r($_GLOBALS, true);

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

于 2009-01-19T04:37:36.937 回答
1

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

curl -d hello=world -d test=yes http://localhost/dump.php
于 2009-01-19T05:58:26.807 回答
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则将两者都保存。

于 2009-01-19T05:32:07.810 回答