2010-09-15 48 views
5

我使用HTTP POST將數據發送到我的服務器。但在服務器中,我沒有收到數據。不知何故,我沒有辦法在客戶端檢查數據(或調試腳本)。但在客戶端,我得到HTTP 200,意味着數據被髮送。我也可以看到連接和數據發送成功。但是,登錄服務器時不包含數據(僅限於字節數)。php腳本記錄POST的原始數據

如何記錄發送到服務器的原始POST數據?

僅供參考,這裏的客戶端是一個功能非常有限的嵌入式設備。所以,這個問題。所以,我無法檢查「print_r」或「echo」

+0

,如果你嘗試的print_r($ _ POST),會發生什麼? – 2010-09-15 13:56:51

+0

不幸的是我不能在客戶端看到。所以,它不會工作。 – Morison 2010-09-15 13:59:13

+0

你是否能夠重現與其他一些更有效的客戶端(並能運行像螢火蟲^^)的問題? – 2010-09-15 14:03:14

回答

16

嘗試:

<?php 
print_r($_POST); 
?> 

你也可以嘗試:

<?php 
print_r($_REQUEST); 
?> 

顯示,如果這些變量未來在$ _ POST(FORM-POST如果編碼/方法是正確的)或$ _GET

如果您想記錄而不是在屏幕上打印 - 您可以嘗試:

<?php 
file_put_contents("post.log",print_r($_POST,true)); 
?> 
+2

感謝Rudi,我猜file_put_contents是最好的事情。 – Morison 2010-09-15 14:09:49

0

嘗試使用var_dump($_POST['name-of-field'])var_dump($_POST)

更新://和瀏覽頁面的源代碼,並尋找一個陣列

0

如果指向表單的頁面下面的代碼是什麼,你得到什麼? Nicles?

<?php 
echo "<pre>" 
print_r($_POST); 
?> 
+0

不幸的是我無法在客戶端看到。客戶實際上是一個嵌入式設備。所以,它不會工作。 – Morison 2010-09-15 14:00:25

9

寫入後數據保存到文件:

file_put_contents('/tmp/postdata.txt', var_export($_POST, true)); 
+0

儘管這隻能用於調試。永遠不要讓任何人將任何來自$ _POST的東西直接寫入到真實世界應用中的某個文件中...... – 2010-09-15 14:05:05

+0

非常感謝Sjoerd。我想這是最好的事情。既然Rudi在你之前回答了這個問題,所以我將不得不選擇他的答案:( – Morison 2010-09-15 14:11:10

+0

Martin,我明白了,我只會用它來進行調試 – Morison 2010-09-15 14:11:46