1

我有一个 IPN 脚本,它可以做很多事情,今天它从 PayPal 获取数据并使用它向客户发送邮件收据。PayPal 有一个 IPN 模拟器,可让您模拟购买并发送这些邮件,但您每次只能发送一个 item_name/ 一种产品。今天我的解决方案至少适用于一种产品,但我不知道购买几种产品会发生什么。测试这一点的唯一方法是使用真实的 VISA 进行实时支付。

我的 PDT 脚本也有类似的问题,它更容易测试,因为我可以更新 pdt.php 页面,在我进行更改并上传新文件后,用户被重定向到,但这是一封电子邮件,所以我不能那样做。

我的想法是创建一个空数组,并为每个循环计数/每个产品创建一个循环,以将当前变量(item_name)添加到数组中,然后在发送邮件时包含数组内容,因此所有项目/产品都是显示。这可能吗?我玩了一段时间,但无法完成,要么打印“数组”,要么打印“”空白。

这是我今天的 IPN 脚本:http: //pastebin.com/ysUsfGyf

我想把这个关键区域编辑成这样,我所做的就是将一个计数器设置为 0 ($j = 0),实例化一个空数组 ($arr = array();) 并尝试使用每个插入 item_name循环计数到数组 [j],它应该是 0 1 2 3 等等。然后稍后在撰写邮件时,我添加了一行: $message .= "$arr"; 但我没有得到任何好的结果,只有空的或作为“数组”。

$array_keys = array_keys($ipn_post_data);
    $count = 1;
    $i = 1;
    $j = 0;
    $arr = array();

    foreach($array_keys as $element) 
    {
        if (!strncmp('item_number', $element, strlen('item_number')))
            $count++;   

    }
        for($idx = 1; $idx < $count; $idx ++ & $i++) 
        {   
            $name = mysql_real_escape_string($ipn_post_data[item_name . $i]);
            $arr[$j] = $name;
        }

我可以在此脚本中进行哪些更改或调试以摆脱此问题?

4

1 回答 1

0

工作代码:

 // send user an email with a confirmation

    $array_keys = array_keys($ipn_post_data);
    $count = 1;
    $i = 1;
    $j = 0;
    $arr = array();

    foreach($array_keys as $element) 
    {
        if (!strncmp('item_number', $element, strlen('item_number')))
            $count++;   

    }
        for($idx = 1; $idx < $count; $idx ++ & $i++ & $j++) 
        {   
            $name = mysql_real_escape_string($ipn_post_data[item_name . $i]);
            $arr[$j] = $name;
        }

    $arrstring = implode( ', ', $arr);

然后$message .= "$arrstring";

于 2013-06-19T18:47:48.217 回答