2009-01-19 61 views
3

如何使用curl模擬HTTP POST請求並在文本文件上捕獲結果?我已經稱爲腳本dump.php:使用命令行curl模擬HTTP POST並將輸出導出到文本文件

<?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 
    (
    ) 
+0

如埃文建議,在捲曲改變這_GLOBALS $,而不是$全局和現在有沒有輸出 – Francis 2009-01-19 05:34:14

+0

刪除了刻度線 - d選項,現在POST變量在輸出文件中可見。感謝埃文的幫助! – Francis 2009-01-19 05:56:56

+0

不客氣,弗朗西斯,對不起,我不知道這個問題。 ;-) – 2009-01-19 08:54:27

回答

2

您需要使用$_GLOBALS而非$GLOBALS

此外,你可以做到這一點,而不是使用輸出緩衝:

$var = print_r($_GLOBALS, true); 

提供了true作爲第二個參數print_r將返回結果,而不是自動打印出來。

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將同時存在。

1

刪除刻度線(')來自卷邊命令行:

curl -d hello=world -d test=yes http://localhost/dump.php 
相關問題