在发送到PayPal之前不验证POST变量 - 何时检查?

时间:2011-01-14 12:40:56

标签: php post paypal paypal-ipn

我们有一个PHP系统,我们正在使用Micah Carrick的“PHP Paypal IPN集成类”(http://www.micahcarrick.com/php-paypal-ipn-integration-class.html).

在他的示例代码中,他建议我们在将POST变量传递给PayPal之前验证它们

switch ($_GET['action']) {

   case 'process':      // Process and order...

... 
      // This is where you would have your form validation  and all that jazz.
      // You would take your POST vars and load them into the class like below,
      // only using the POST values instead of constant string expressions.
      // For example, after ensureing all the POST variables from your custom
      // order form are valid, you might have:
      //
      // $p->add_field('first_name', $_POST['first_name']);
      // $p->add_field('last_name', $_POST['last_name']);

... 
    $custom=$_SESSION['sess_user_id']."~".$_POST['promo_code'];
    $p->add_field('user_id', $_SESSION['sess_user_id']);
    $p->add_field('custom', $custom);
    $p->add_field('amount', $_POST['amount']);
...
    $p->submit_paypal_post(); // submit the fields to paypal
      break;

但是,对于上面提到的变量,我们并没有这样做。

我们是否应该在(a)此阶段或在PayPal(b)返回数据或两者都返回的阶段进行验证?

我们应该如何验证数据呢?

3 个答案:

答案 0 :(得分:1)

您应该在将它们发送到PayPal之前验证它们。您应检查空变量,类型是否正确(数量不应包含字母),字符数(如果适用)是正确的。基本上这些字段应该反映出你期望在那里找到的东西。

答案 1 :(得分:1)

我的猜测是两种情况。

必须在发送数据之前进行验证。

在回应时,我认为这是一件好事。

答案 2 :(得分:1)

您应该在将用户发送到PayPal之前以及当您收到确认付款的PayPal IPN消息时,在两端验证并验证您的数据。

验证在确保用户支付正确的金额之前,他们被发送到正确的PayPal帐户,并且您有一个针对转换的标识符(在“自定义”变量中)以允许您结婚付款PayPal确认后的正确用户/购买。

验证确保再次支付了正确的金额后,交易标识符就会出现,有效且正确,并且用户/购买会更新以反映转换结果。