【发布时间】:2011-09-14 05:09:38
【问题描述】:
只有当贝宝发回它没有插入我的正确值(我的意思是它插入'0')时,这个贝宝页面才能正常工作,请看一下......
<?php
require 'config.inc.php';
$p = new Paypal();
if(isset($_GET['period']))
{
$allowedPeriods = array("1000", "5000", "10000", "20000");
if(!in_array($_GET['period'], $allowedPeriods))
{
die("Allowed periods are '1000', '5000', '10000', '20000'");
}
if(!$usersClass->checkLoggedIn())
{
die("You must be logged in");
}
$prices = array( "1000" => 10, "5000" => 30, "10000" => 50, "20000" => 85 );
$this_script = "http://".$_SERVER['HTTP_HOST']."/paypal.php?act=";
$p->add_field('business', PAYPAL_EMAIL_ADDRESS);
$p->add_field('return', $this_script.'success');
$p->add_field('cancel_return', $this_script.'cancel');
$p->add_field('notify_url', $this_script.'ipn');
$p->add_field('item_name', 'Credits');
$p->add_field('cmd', '_xclick');
$p->add_field('amount', $prices[$_GET['period']]);
$p->add_field('custom', $usersClass->userID()."||".$_POST['period']);
$p->add_field('rm', '2');
$p->add_field('currency_code','GBP');
$p->submit_paypal_post();
}
if(isset($_GET['act'])) {
switch ($_GET['act']) {
case "cancel": print "Order was canceled!";
break;
case "success":
print "If payment was successfully received you should be on the top!";
break;
case "ipn": if ($p->validate_ipn()) {
$custom = $_POST['custom'];
$explode = explode("||", $custom);
$userid = (int) $explode[0];
$days = $explode[1];
$daysArray = array(10 => 1000, 30 => 5000, 50 => 10000, 85 => 20000 );
$days = $daysArray[$days];
$tillDate = $days;
mysql_query("insert into `featured` values (null, '$userid', '$tillDate')")
}
break;
}
}
?>
【问题讨论】:
-
在哪里插入零?还要确认用户 ID 是否为整数,然后在你的 sql 中删除它周围的单个 qoutes
-
@molvi,不需要在sql语句中去掉整数两边的单引号。
-
你需要为传递整数值的字符串加上引号,也不需要它们,我认为作为字符串值发送到整数的数据不会被 mysql 强制转换
-
您需要更具体地了解正在发生的事情、您尝试过的内容以及无效的内容。