منع أكثر من جلسة واحدة من الكتابة فوق بعضها البعض على نفس الموقع في PHP

0

أحتاج إلى مزيد من الضوء فيما يتعلق بالجلسات في PHP ، عندما يكون لدي مستخدمان مختلفان قاما بتسجيل الدخول على موقع معين ، فلنقل على سبيل المثال لوحة المعلومات أو الحساب (على سبيل المثال: https://www.myspace.com/admin/dashboard ) في علامات تبويب منفصلة في في نفس المتصفح ، تميل جلسة واحدة إلى استبدال الجلسة الأخرى ، كيف يمكنني منع حدوث ذلك.

2 الاجابة

1
افضل جواب

لا يمكنك.

يتم تحديد الجلسات باستخدام ملفات تعريف الارتباط للجلسة وسيشارك مثيل متصفح واحد ملفات تعريف الارتباط عبر علامات التبويب (باستثناء Incognito / Private / etc).

:مؤلف
0

الحل الوحيد الذي يمكن أن أتوصل إليه هو استخدام حقيقة أنه يمكنك إخبار المتصفح باستخدام ملف تعريف الارتباط في موقع محدد فقط.

//when user1 visits, set custom session cookie works on his private url
setcookie("sessionId", $sessionTocken1, time() + 3600, "/dashboard/user1"); 

//when user2 visits, set custom session cookie works on his private url
setcookie("sessionId", $sessionTocken2, time() + 3600, "/dashboard/user2");

الآن user1 على لوحة القيادة الخاصة به في /dashboard/user1 سيرسل قيمة ملف تعريف ارتباط مختلفة عن user2 على لوحة التحكم الخاصة به في /dashboard/user2

يرجى ملاحظة أنه من خلال القيام بذلك ، سيكون عليك إدارة نظام جلسات مخصص على جانب الخادم بدلاً من نظام PHP $_SESSION مدمج واحد.

لن أفعل هذا بسبب غرابته وآثاره الجانبية المعقدة ، لقد كتبته للتو في حالة احتياجك إليه حقًا. تم بناء الجلسات على ملفات تعريف الارتباط وملفات تعريف الارتباط غير مصممة للعمل مع مستخدمين مختلفين يستخدمان نفس المتصفح في نفس الوقت.

:مؤلف
فوق
قائمة طعام