在PHP中是否有办法捕获发送到页面的所有post和get变量?
我正在PayPal Sandbox中测试我的PayPal订阅网站,但我所做的每笔交易都会在我的代码中触发无效交易。
所以,我想捕获PayPal发送到我的ipn页面的所有内容,看看我是否能理解发生了什么。这可能吗?
谢谢!
答案 0 :(得分:6)
对于PayPal IPN,您应该能够使用$postdata = file_get_contents('php://input');
来获取验证回调所需的原始发布数据。
答案 1 :(得分:4)
我有一个简单的方法可以帮助我捕获所有的帖子数据:
$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);
}
这允许您捕获所有发布数据(无论其名称或值如何),然后存储而不是字符串,非常适合插入数据库,但您可能需要对其进行url编码。我已将其更新为包含对数组的支持,但您必须根据自己的要求对其进行自定义,它会产生如下输出:
姓名=特里&安培;姓=克南&安培;用户ID = 111111&安培;设备= 999999999&安培;文本=你好&安培;疑问= Q1 | Q2 | Q3&安培;答案= A1 | A2 | A3&安培;类型=手册
答案 2 :(得分:2)
是。
在您的IPN页面上,您可以非常轻松地记录所有get,post和cookie变量。
试试这个:
ob_start();
print_r($_REQUEST);
$data = ob_get_contents();
ob_end_clean();
file_put_contents("Path/to/log.file",$data);
答案 3 :(得分:1)
帖子值在$_POST
数组中。
获取值位于$_GET
数组中。
获取,发布和Cookie值都放在$_REQUEST
只需根据需要保存和/或打印这些数组的内容。
有关详细信息,请查看:
http://php.net/manual/en/language.variables.superglobals.php
答案 4 :(得分:1)
<?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
?>
答案 5 :(得分:0)
您有$_REQUEST
这是$_GET
和$_POST
的组合。