我正在用登錄頁面創建一個網頁遊戲。如果用戶想要轉換成遊戲的「專業版」,這將把用戶帶到PayPal。PHP - 在paypal重定向後失去會話
我遇到的問題是會話似乎是從PayPal返回到我的payment_successful.php頁面中斷。會話變量都是空的。
我開始給所有適當的頁面session_start()
行。會話ID(從Chrome中的控制檯獲取)與會話啓動時的相同,並返回到payment_successful.php。所以這個「看起來」是不變的。
經過大量的不同想法的修補後,我嘗試手動添加在會話ID。
無論是登錄頁面和頁面Payment_successful:
session_id('my_id');
session_start();
這就像一個魅力,並返回我所有的會話變量的完美。然而,我猜測這是一個非常糟糕的主意,有一個固定的會話ID(抱歉,我忘了提及我是所有這一切的新手)。
所以我改變了登錄頁面來創建自己的會話ID,希望它只是簡單地把新的值來代替固定值:
登錄頁面
add_seshid();
session_start();
// session_set_cookie_params (lifetime,'/','.mydomain.com',false);
function add_seshid() {
$sesh_salt1 = "*s!$e";
$sesh_salt2 = "$6#£";
$sesh_date = date("mYhds");
$sesh_pass = "lambchops".$sesh_date;
$sesh_token = hash('ripemd128',"$sesh_salt1$sesh_pass$sesh_salt2");
session_id($sesh_token);
}
Payment_successful頁:
session_id($sesh_token);
session_start();
雖然它輸出一個會話ID(如986a25f1d1fdabc62837def39b485c6),並且跨越它對面的會議,它也不會返回任何會話變量。 我使用自己的域名修飾session_set_cookie_params行,以查看域名更改是否存在問題,但這沒有任何區別。此外,所有的密碼,鹽等,已被更改爲本文的目的,以防有人發癢評論!
希望有人能指出我正確的方向。
非常感謝,
丹。
嗨,是的,它從開始到結束都是相同的PHPSESSID,除了Paypal頁面之間有自己的ID。我已經將session_id移到了session_start的下面,但是與空的返回沒有區別。我的Paypal鏈接是:\t header('location:https://www.sandbox.paypal.com/cgi-bin/webscr'.$querystring); \t exit(); –
您是否嘗試過針對不是貝寶的東西測試您的代碼?讓我們來說簡單的表單,它將幾個輸入字段提交到您的PHP頁面。 PHP啓動會話並設置從$ _POST讀取的會話變量。然後你點擊鏈接到網站,將導致你到其他網站(不同的ip/fqdn)。在這個其他網站 - 把一個鏈接回到原來的網站不同的PHP文件,這也將開始會議,並簡單地顯示會話變量。我之前和PayPal沙箱一起工作過,我從來沒有這樣的行爲,你描述過。 –