PHP - 捕获所有POST变量

时间:2011-03-08 23:45:49

标签: php post get

在PHP中是否有办法捕获发送到页面的所有post和get变量?

我正在PayPal Sandbox中测试我的PayPal订阅网站,但我所做的每笔交易都会在我的代码中触发无效交易。

所以,我想捕获PayPal发送到我的ipn页面的所有内容,看看我是否能理解发生了什么。这可能吗?

谢谢!

6 个答案:

答案 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的组合。

http://php.net/manual/en/reserved.variables.request.php