Эмуляция HTTP POST с использованием командной строки curl и экспорта вывода в текстовый файл - PullRequest
3 голосов
/ 19 января 2009

Как мне эмулировать HTTP-запрос POST, используя curl и записывая результат в текстовый файл? У меня уже есть скрипт с именем 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 ]

2 голосов
/ 19 января 2009

Вам нужно использовать $_GLOBALS вместо $GLOBALS.

Кроме того, вы можете сделать это вместо использования буферизации вывода:

$var = print_r($_GLOBALS, true);

Если указать true в качестве второго параметра для print_r, результат будет возвращен вместо автоматической печати.

1 голос
/ 19 января 2009

Удалите галочки (') из командной строки curl:

curl -d hello=world -d test=yes http://localhost/dump.php
0 голосов
/ 19 января 2009

Если вы просто пытаетесь захватить данные POST, сделайте что-то подобное для вас dump.php file.

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

Все данные POST хранятся в переменной $_POST. Кроме того, если вам нужны данные GET, $_REQUEST будет содержать оба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...