2016-09-30 68 views
0

好,晚上好在PHP接收HTTP POST數據

我一直有問題,從C++程序的http請求recieving數據

我用Wininet

InternetOpenA() 
InternetConnect() 
HttpOpenRequest() 
HttpSendRequest() 

現在的好消息是它發送該程序的PHP文件,現在不用擔心所有的工作罰款有

當我做這樣的代碼來獲取POST數據

<?php 
$data = file_get_contents(php://input); 
$fp = fopen("log.txt","a+"); 
fwrite($fp,$data); 
fclose($fp); 
?> 

它獲取數據並保存到文本文件。但當我做以下

<?php 
$data = urldecode($_POST['info']); 
$fp = fopen("log.txt","a+"); 
fwrite($fp,$data); 
fclose($fp); 
?> 

它只是創建log.txt並不保存其中的任何數據。開始認爲這是一個PHP的問題,但我試過的每一件事都失敗了......有什麼可能是錯的?

+0

你可以print_r($ _ POST);?你確定你是用正確的內容類型發佈數據嗎? (application/x-www-form-urlencoded) –

+0

是的,我正在使用我在這裏找到的帖子http://securityblog.gr/1823/http-post-and-get-requests-with-wininet-and-c/ – Manheim

+0

無論如何,只要你能縮小問題的範圍,'$ _POST'是空的還是不是?同樣在你的C++代碼中編輯,你鏈接的例子不會發送一個名爲'info'的字段。 –

回答

0

從經驗來看,fopen對我造成了很多錯誤,它並不總是適用於某些方面。 創建一個mysql數據庫並將日誌數據保存在那裏,您可以使用C++程序創建一個頁面/連接到它以獲取日誌。

+0

如果它不顯示空文本,你曾經試過,它保存在分貝,當它沒有顯示在文本文件? – Manheim

0

如果從php://input獲取數據,但$_POST是空的,那麼你的POST數據不是在key=value格式。如果PHP找不到任何key=value數據,則無法爲您建立$_POST。 $ _POST是一個像其他任何數組一樣的數組,所有進入它的數據都必須有必須。沒有鍵,沒有數組輸入。

+0

我該如何解決這個問題? – Manheim

+0

您遵守用於格式化POST風格表單提交的HTTP標準,或者您自己解析從php://輸入中讀取的任何內容。 –