2014-10-18 83 views
0

我有這個按鈕:PHP IPN自定義變量不工作

<button name="pay">BUY FOR 0.50$</button> 

當點擊它插入使用$ 0來支付報酬,買家IP和帳戶細節到DB:

$connect->query("INSERT INTO payments(ip,payed,acc,showed) VALUES('$ip','$payed', '$s', '$h')"); 

    echo ' 
<form action="https://www.paypal.com/cgi-bin/webscr" id="formsend" method="post" target="_top"> 
    <input type="hidden" name="cmd" value="_xclick"> 
    <input type="hidden" name="business" value='.$paypal.'> 
    <input type="hidden" name="lc" value="US"> 
    <input type="hidden" name="item_name" value="LOL ACC"> 
    <input type="hidden" name="amount" value="0.50"> 
    <input type="hidden" name="currency_code" value="USD"> 
    <input type="hidden" name="custom" value="<?=$ip;?>"> 
    <input type="hidden" name="button_subtype" value="services"> 
    <input type="hidden" name="no_note" value="0"> 
    <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHostedGuest"> 
    <input type="submit" name="sub" class="sub" /> 
</form> 
    '; 
?> 

<script type="text/javascript"> 
    document.getElementById('formsend').submit(); // SUBMIT FORM 
</script> 

之後它會自動點擊一個新的表單去付款,如果Paypal工作正常。但是,在IPN上,變量custom未傳遞IP地址。

這裏面的IPN驗證部分:

require_once("config/config.php"); 
$connect = new mysqli($server['database']['host'],$server['database']['username'],$server['database']['password'],$server['database']['db']); 

// PAYMENT VALIDATED & VERIFIED! 

$ip = $_POST['custom']; 
$check = $connect->query("SELECT * FROM payments WHERE ip='$ip' AND payed = 0"); 

if($check->num_rows){ 
    $connect->query("UPDATE payments SET payed = 1 WHERE ip = '$ip'"); 
} 

我也試圖爲它插入隨機字符串,但似乎沒有任何工作。我究竟做錯了什麼?

+0

PHP單引號 - '回聲「... ... 」'不會被解析。您可以在將表單提交給PayPal之前查看頁面源代碼來驗證這一點。嘗試改爲'echo'

...
';' – Sean 2014-10-18 17:56:24

回答

0

既然你有<?php?>裏面單引號,它不會被解析。爲了做到這一點,你應該使用字符串連接運算符,就像這樣:

echo '<form...> 
<input type="hidden" name="custom" value="' . $ip . '"> 
</form>';