2014-10-18 84 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>';