有没有在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