لماذا جلسات PHP بلدي يموتون؟ ولماذا لا يمكنني استعادتها؟

StackOverflow https://stackoverflow.com/questions/183932

  •  06-07-2019
  •  | 
  •  

سؤال

ولدي التطبيق باستخدام PHP وAPI باي بال. الطريقة الأساسية التي تعمل على الحصول على الدفع هي أن لديك مكالمة خدمة ويب لباي بال للحصول على رمز وبعد ذلك إعادة توجيه المتصفح إلى PayPal مع ذلك رمز للمستخدم على الدفع. بعد أن تم تأكيد تفاصيل الدفع، باي بال الموجهات إلى URL قمت بتعيين أصلا في خدمة الدعوة.

وهذه جميع الأعمال، والملايين من الناس يستخدمون كل يوم، وهلم جرا.

والغريب في الأمر، عندما الموجهات باي بال الظهر، ذهب الدورة PHP. انها جيدا موثقة قضية .

والسؤال الأول: لماذا يحدث هذا؟ الصفحتين في نفس المجال، على حد سواء استخدام HTTPS. أعمال الدورة بالنسبة لجميع طلبات حتى باي بال إعادة توجيه إلى الخلف.

وهذا موضوع المنتدى مرتبطة يشير إلى وجود مشكلة، لتستمر معرف جلسة في طلب باي بال ومن ثم استرجاعها في وقت لاحق واستعادة الدورة. عظيم، إلا أنه لا يبدو أن العمل.

ويمكنني أن أضيف بعض التصريحات السجل:

log(session_id());

وقبل وبعد العديد من الموجهات. عندما يعود من باي بال، وتسجيل بعض أكثر.

log("session id is " . session_id());
$session_id = get_session_id_from_paypal();
log("setting it back to " . $session_id);
session_id($session_id);
session_start();
log("session id is now " . session_id());

والنتيجة ليست في كل ما أتوقع:

<اقتباس فقرة>   

وsession_id هو fc8f459a186a3f4695ff9ac71b563825
  تحديد إعادته إلى 82460dcf8c8ddd538466e7cb89712e72
  session_id الآن 360ba3fd99d233e0735397278d2b2e55

والسؤال الثاني: لماذا هو معرف جلسة يست في كل ما أنا وضعت ل؟ ما الخطأ الذي افعله؟ أو، على الأقل، لماذا لا أحد من متغيرات جلسة يعود؟

هل كانت مفيدة؟

المحلول

مجرد فكرة ...

هل لديك session.referer_check المقرر أن المضيف ربما؟ الافتراضي هو سلسلة فارغة، ولكن قد تم تغييره ... وعندما "يعود" الصفحة من باي بال، وسوف فب القمامة على معلومات الدورة.

ويمكنك التحقق من session.referer_check مع phpinfo ().

نصائح أخرى

هل كنت تفعل phpinfo () ومعرفة ما إذا كان session.auto_start هو الصحيح؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top