session失效,很奇怪的失效解决方案
Jun 13, 2016 pm 01:33 PM
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="xxxx@gmail.com";//payer_email //subject $subject="Whim Win paid successful!"; //from $header="from: test <whimwin>"; //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(); ?> </whimwin>
------解决方案--------------------
先测试一下
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呢。

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

So legen Sie das Sitzungszeitlimit in der SpringBoot-Sitzung fest

So verwenden Sie die Module email, smtplib, poplib und imaplib zum Senden und Empfangen von E-Mails in Python

Lösung für das domänenübergreifende Problem der PHP-Sitzung

Was ist die Standardablaufzeit von Session PHP?

Was soll ich tun, wenn die PHP-Sitzung nach der Aktualisierung verschwindet?

So implementieren Sie die SMS-Anmeldung in der Redis-Anwendung für gemeinsam genutzte Sitzungen

So lesen und schreiben Sie Sitzungsdaten in mehreren Dateien mit PHP korrekt
