2013-06-22 57 views
0

好吧,我確定很多人已經問過這個問題,但我還沒有看到任何明確的答案。我需要捕捉,我已經有一個值的變量....這是我的例子:對於IPN的PHP自定義變量

<?php 

$data_p = mysql_query("SELECT * FROM `dreams`") or die(mysql_error()); 

while($info = mysql_fetch_array($data_p)) { 
    <table> 
     <tr> 
      <td><?php echo $info['first']; ?> <?php echo $info['last']; ?></td> 
      <td><?php echo $info['city']; ?> <?php echo $info['state']; ?></td> 
      <td><?php echo $info['dream']; ?></td> 
      <td>$<?php echo $info['donation_goal']; ?></td> 
      <td> 
       <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> 
       <input type="hidden" name="cmd" value="_s-xclick"> 
       <input type="hidden" name="hosted_button_id" value="2HGLK2WGELUNG"> 
****************<input type="hidden" name="dream_id" value="<?php echo $info['dream_id']; ?>"> 
       <input type="image" src="images/donatebutton.png" id="donate" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
       <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
       </form> 
      </td> 
     </tr> 
    </table 
} 

這說明,因爲這:

http://www.dreamsurreal.com/images/example.jpg

與所有的線* *這是我遇到麻煩的地方。

我創建了paypal.com的按鈕,但我添加了*行自己。

我需要這個變量傳遞給貝寶,這樣我通過ipn.php更新我的數據庫。下面是ipn.php MYSQL的更新區域:

// add this order to a table of completed orders 
    $payer_email = mysql_real_escape_string($_POST['payer_email']); 
    $mc_gross = mysql_real_escape_string($_POST['mc_gross']); 
    $dream_id = $_POST['dream_id']; 
    $sql = "INSERT INTO orders VALUES 
      (NULL, '$txn_id', '$payer_email', '$mc_gross', '$dream_id')"; 

但即使我加了一些原因,$ dream_id = $ _ POST [「dream_id」],也增加$ dream_id到了MySQL插件的INSERT部分,它沒有插入實際的變量,它只是使其爲0.

我希望我已經足夠清楚每個人,我可以請幫助如何使這項工作正常。

回答

0

得到它的工作大家....好了,所以這裏是它如何做的:

這是我們沒有增加的可變按鈕腳本....

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> 
    <input type="hidden" name="cmd" value="_s-xclick"> 
    <input type="hidden" name="hosted_button_id" value="2HGLK2WGELUNG"> 
    <input type="image" src="images/donatebutton.png" id="donate" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
    <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
    </form> 

添加此行到我們的形式...

<input type="hidden" name="item_number" value="<?php echo $MY_VARIABLE; ?>"> 

用你自己的變量替換$ MY_VARIABLE。

我們對我們的按鈕新的代碼看起來像

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> 
    <input type="hidden" name="cmd" value="_s-xclick"> 
    <input type="hidden" name="hosted_button_id" value="2HGLK2WGELUNG"> 
    <input type="hidden" name="item_number" value="<?php echo $MY_VARIABLE; ?>"> 
    <input type="image" src="images/donatebutton.png" id="donate" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
    <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
    </form> 

之後,在你的IPN。PHP的變化這方面

// add this order to a table of completed orders 
    $payer_email = mysql_real_escape_string($_POST['payer_email']); 
    $mc_gross = mysql_real_escape_string($_POST['mc_gross']); 
    $sql = "INSERT INTO orders VALUES 
      (NULL, '$txn_id', '$payer_email', '$mc_gross')"; 

添加這些進去(我使用的是整數,所以我只是確保其正確的類型)

$MY_VARIABLE = (int)$_POST['item_number']; 

$sql = "INSERT INTO orders VALUES 
    (NULL, '$txn_id', '$payer_email', '$mc_gross', '$MY_VARIABLE')"; 

後我們所有的修補程序,整個區域應如下所示:

// add this order to a table of completed orders 
    $payer_email = mysql_real_escape_string($_POST['payer_email']); 
    $mc_gross = mysql_real_escape_string($_POST['mc_gross']); 
    $dream_id = (int)$_POST['item_number']; 
    $sql = "INSERT INTO orders VALUES 
      (NULL, '$txn_id', '$payer_email', '$mc_gross', '$dream_id')"; 

我希望這一切都有所幫助,謝謝你的時間。

+0

好的....所以這個沙箱的工作....現在我遇到了它的現場版本.... grrrr ....哈哈。 –

0

變化

$dream_id = $_POST['dream_id']; 

$dream_id = (int)$_POST['dream_id']; 

如果你仔細看(如果我沒記錯的話)有一個在貝寶的自定義值字段的結束點。將變量轉換爲一個整數可以修復此問題,以及防止SQL injection。您可以在PHP here上閱讀關於類型轉換的更多信息。

+0

我是否需要在創建按鈕時在自定義變量下添加dream_id,或者我能夠像上面提到的那樣將它自己添加到編碼中?但是,是的,我會改變它,並把它作爲一個整數,謝謝。 –

+0

只是改變你的代碼行應該沒問題。我不在PayPal本身做很多事情,所以可能有某種設置或配置我不知道要解決這個問題。 –