2014-01-18 30 views
0

因为我使用PayPal和BlueSnap我有两个不同的IPN,当他们都在页面上时似乎有一个问题,如果我拿走一个然后他们将工作真的需要这个工作花了几个小时试图弄清楚:/错误使用后两次?

<?php 
    /** 
    * If the player clicks the continue 
    * button, it will perform the following 
    * process. The process will redirect to 
    * the checkout URL as long as the player 
    * has entered their username details. 
    */ 
    if (isset($_POST['continue'])) { 
     $username = trim($_POST['username']); 
     $product = trim($_POST['product']); 
     if ($username != "Enter Username" && $username != "") { 
      header("Location: http://www.plimus.com/jsp/buynow.jsp?contractId=" . $product . "&custom1=" . $username); 
      exit; 
     } 
    } 
?> 
<html> 

      <form action="<?php ?>" method="POST"> 
       <div name="select"> 
        Product: 
        <select name="product"> 

        </select> 
       </div> 
       <div name="username"> 
        Username: 
        <input type="text" maxlength="12" name="username" value="Enter Username" onblur="if(this.value=='') this.value='Enter Username';" onfocus="if(this.value=='Enter Username') this.value='';"/> 
       </div> 
       <?php 
        /** 
        * If the user enters their username details 
        * incorrectly, it will perform this process. 
        * This will just send a line of text asking 
        * them to enter their username. I recommend 
        * carrying over this process when you integrate 
        * it with your own website theme. 
        */ 
        if (isset($_POST['continue'])) 
         echo "<font color=red>Please enter your username.</font>"; 
       ?> 
       <div name="button"> 
        <button type="submit" name="continue" value="Continue">Continue</button> 
       </div> 
      </form> 
<a href="http://www.plimus.com/ecommerce/buyers" target="_blank" title="Trusted and Secure Online Payment Processing via PLIMUS"><img src="https://www.plimus.com/images/icons_wizard/icons/cards/cards_type2_1-1.gif" border="0"></a> 
      </center> 

      <br> 

      <br> 
<center> 
<?php 

    if(isset($_POST['submit'])) { 
     $errors = array(); 

     $user = trim($_POST['user']); 
     $prod = trim($_POST['prod']); 
     header("Location: paypal.php?username=". $user ."&prod=". $prod); 
     exit; 
    } 

?> 

    <form action="<?php echo basename($_SERVER['PHP_SELF']); ?>" method="POST"> 
    <tr><td><center> 
     <table> 
      <select name="prod"> 


      </select> </td></tr> 
      <tr> 
       <td>Username:</td> 
       <td><input type="text" name="user" value="" /></td> <td colspan="2"><input type="submit" name="submit" value="Submit" /></td> 
      </tr> 
      </table> 
      </form> 

回答

0

假设您将处理过的数据存储到某种形式的数据库中。
我所要做的就是像平常一样存储数据,然后运行快速选择以确保没有双重提交。 这也假设你已经消毒/验证了POSTDATA

$check = mysqli_query($link, "SELECT `id` FROM `ipn_data` WHERE `txn_id` = '".$_POST['txn_id']."'"); 
if(mysqli_num_rows($check)) 
    exit("You've already submitted this payment"); 
mysqli_query($link, "INSERT INTO `ipn_data` (`custom`, `txn_id`) VALUES (".$_POST['custom'].", '".$_POST['txn_id']."')"); 

类似的规定。
我可应要求提供我的贝宝IPN类

<form action="someaction.php" name="paypal" method="post">
<form action="someaction.php" name="plimus" method="post">
然后只需运行一个检查,看看哪些形式发布:
if(isset($_POST['paypal']))
if(isset($_POST['plimus']))

+0

这并不是说我琬这只是你选择你想购买物品的页面,因为我使用了“post”方法两次,所以我不能让它们在同一页面上,你可以在这里看到http://boomscape.co。英国/ donate.php&这里是我的贝宝捐赠页面http://boomscape.co.uk/donatepp.php时,他们在一起的贝宝不再工作:S – user3208776

+0

啊,我明白了。你有没有尝试命名形式不同? '

'和''然后简单地运行一个检查是否发布了哪些表单:'if(isset($ _ POST ['paypal']))'if'isset($ _ POST ['plimus'])) 我将更新原始文章,原因是关于评论的格式不是很好 – Magictallguy

+0

我试过,没有工作的人:/它是如此烦人不得不为我的东西使用2个不同的页面:/ – user3208776