当前位置:Gxlcms > PHP教程 > session失效,很奇怪的失效解决方案

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呢。

人气教程排行