首頁 >後端開發 >php教程 >session失效,很奇怪的失效解决方案

session失效,很奇怪的失效解决方案

WBOY
WBOY原創
2016-06-13 10:20:41980瀏覽

session失效,很奇怪的失效
这两天一直在写paypal, 现在就快把ipn.php整完了,但遇到一个问题让我很费解啊!
session在ipn.php里面只有一部分有效,看代码

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php //ipn.php全部代码session_start();include('ipnlistener.php');include_once 'lib/functions.php';ini_set('display_errors', 'Off');$db = new Connection();$connection = $db->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="[email protected]";//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呢。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn