session失效,很奇怪的失效解决方案
时间:2021-07-01 10:21:17
帮助过:9人阅读
session失效,很奇怪的失效
这两天一直在写paypal, 现在就快把ipn.php整完了,但遇到一个问题让我很费解啊!
session在ipn.php里面只有一部分有效,看代码
PHP code
connect();
$listener = new IpnListener();
$listener->use_sandbox = true;
$order_time=$_SESSION['order_time_org'];
$username=$_SESSION['user'];
echo "$order_time, $username";
//到这里位置以上,SESSION是可以用的 上面
输出两个都能显示出来
//下面就显示不出来了!这是为什么?
try {
$verified = $listener->processIpn();
} catch (Exception $e) {
// fatal error trying to process IPN.
exit(0);
}
if ($verified)
{
// IPN response was "VERIFIED"
//send email form
$invoice_id=$_POST['invoice'];
$payment_status = $_POST['payment_status'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
//$order_time = $_POST['custom'];
//$whimwin_user=$_SESSION['user'];
//这里的$_SESSION['user']显示不出来啊!
//if($payment_status=="Completed")
//{
$query="UPDATE CART SET payment_status='paid' WHERE username='$username' AND order_time='$order_time' AND invoice_id='$invoice_id'";
$result=queryMysql($query);
if($result)
{
$to="xxxx@gmail.com";//payer_email
//subject
$subject="Whim Win paid successful!";
//from
$header="from: test ";
//message body
$message="Dear Member, \n\n";
$message.="this is you invoice id $invoice_id \n";
$message.="$payment_status, $order_time, $payer_email, $receiver_email, $username";
//send email
$sendmail=mail($to,$subject,$message,$header);
}
//}
} else {
// IPN response was "INVALID"
}
$db->close();
?>
------解决方案--------------------先测试一下
try {
print_r($_SESSION);
$verified = $listener->processIpn();
print_r($_SESSION);
} catch (Exception $e) {
// fatal error trying to process IPN.
exit(0);
}
------解决方案--------------------不要去管他,自己缓存一下
先调通了再说
try {
$mysession = $_SESSION;
$verified = $listener->processIpn();
$_SESSION = $my_session;
} catch (Exception $e) {
// fatal error trying to process IPN.
exit(0);
}
------解决方案--------------------你这个ipn.php文件是支付成功的verify页面吧?我有看到你update支付状态的sql语句。
如果我猜的没错,那么你要搞清楚的一点是,客户支付的过程是走浏览器,所以cookie头可以续传,但是paypal请求你这个页面通告你支付结果这个流程,是通过palpay服务端完成的,比如我们php常用的curl。所以如果你不是显式的传给paypal当前的cookies,然后paypal请求的header头里带上这个cookies,怎么可能读到session呢。