有沒有在PHP中捕獲所有帖子並獲取發送到頁面的變量的方法?PHP - 捕獲所有POST變量
我在貝寶沙盒中測試我的貝寶訂購網站,但每次我做的交易都觸發了我的代碼中的無效交易。
所以,我想捕捉貝寶發送給我的ipn頁面的所有信息,看看我能否理解發生了什麼。這可能嗎?
謝謝!
有沒有在PHP中捕獲所有帖子並獲取發送到頁面的變量的方法?PHP - 捕獲所有POST變量
我在貝寶沙盒中測試我的貝寶訂購網站,但每次我做的交易都觸發了我的代碼中的無效交易。
所以,我想捕捉貝寶發送給我的ipn頁面的所有信息,看看我能否理解發生了什麼。這可能嗎?
謝謝!
貝寶IPN,你應該能夠使用$postdata = file_get_contents('php://input');
來獲取所需的驗證回調的原始POST數據。
您有$_REQUEST
這是$_GET
和$_POST
的組合。
郵政值是$_POST
陣列英寸
獲取值位於$_GET
陣列中。
GET,POST和cookie值被放置在$_REQUEST
只需保存和/或根據需要打印這些數組的內容。
有關詳細信息,請訪問:
http://php.net/manual/en/language.variables.superglobals.php
沉默不downvote,請。你應該解釋爲什麼。 – webbiedave 2011-03-08 23:58:24
是。
在您的IPN頁面上,您可以非常輕鬆地記錄所有獲取,發佈和cookie變量。
試試這個:
ob_start();
print_r($_REQUEST);
$data = ob_get_contents();
ob_end_clean();
file_put_contents("Path/to/log.file",$data);
我有一個簡單的方法,可以幫助我捕獲所有的POST數據:
$post_vars = "";
if ($_POST) {
$kv = array();
foreach ($_POST as $k => $v) {
if (is_array($v)):
$temp = array();
foreach ($v as $v2) {
$temp[] = $v2;
}
$kv[] = "$k=" . join("|", $temp);
else:
$kv[] = "$k=$v";
endif;
}
$post_vars = join("&", $kv);
}
這使您可以捕獲所有的POST數據(無論其名稱或值),然後保存比在字符串,非常適合插入數據庫,儘管您可能想要對其進行網址編碼。我已經更新到包括對陣列的支持,但你必須自定義爲自己的要求,它產生的輸出是這樣的:
姓=特里&姓氏=克南&用戶id = 111111 &設備= 999999999 &文本=你好&問題= Q1 | Q2 | Q3 &答案= A1 | A2 | A3 &類型=手動
我一直在使用的另一個有用的是: serialize($ _ POST); ,因爲它給出了一個字符串中的整個對象,agaiun非常適合寫入文件或存儲在數據庫中 – 2013-06-24 23:38:02
<?php
$req = 'What i reveive from paypal=====';
foreach ($_POST as $key => $value) // Loop through the key value pairs
{
$req .= "\n\r$key=$value"; // Add the key value pairs to the variable
}
mail('<Your own email address>','Data',$req,'from: <any email address of your own domain>');//mail yourself
?>
謝謝!這工作。 – saburius 2011-03-09 00:14:50
這看起來像一個簡單的方法,是否有一個特殊的處理程序來註冊以獲得這個工作? – 2012-11-27 15:02:19
@TerryKernan:不,沒有特殊的處理程序。但請注意,它不適用於Content-Type:multipart/form-data。有關詳細信息,請參閱http://php.net/manual/en/wrappers.php.php。 – Anomie 2012-11-28 12:36:12