إجبار المستخدمين على تسجيل الخروج عندما يغادرون موقع الويب الخاص بي؟

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

  •  22-09-2019
  •  | 
  •  

سؤال

في تطبيق PHP الخاص بي ، أستخدم $ _session لتتبع ما إذا كان المستخدم قد تم تسجيل الدخول. إذا ترك المستخدم أي صفحة على موقعي على http://mysite.com ويذهب إلى http://someotherwebsite.com, ، أريد تسجيلها تلقائيًا ، بحيث إذا عادوا إلى أي صفحة على http://mysite.com, ، يحتاجون إلى تسجيل الدخول مرة أخرى.

هل هناك طريقة سهلة للقيام بذلك؟

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

المحلول

لا يمكنك معرفة متى مستخدم اوراق اشجار موقعك ، سيكون أفضل رهان لك هو تنفيذ مهلة في جلساتك.

كما قالت معظم الإجابات ، أنت يستطع تحقق مع حدث JavaScript onbeforeunload لكن يمكن للمستخدم تشغيل هذا عن طريق تعطيل JavaScript أو ، مثل أشار بالوس, ، باستخدام متصفح الويب الذي لا يدعمه ، مثل الأوبرا.

لذلك ، أعتقد اعتقادا راسخا تنفيذ مهلة في جلساتك هو أفضل طريقة لفرض تسجيل الخروج.

نصائح أخرى

يمكنك إجراء مكالمة أياكس في onbeforeunload حدث إلى بعض البرنامج النصي جانب الخادم الذي سيقتل الجلسة.

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

  • تعيين onbeforeunload الحدث الذي يرسل مكالمة AJAX إلى الخادم الخاص بك. (كيفية القيام بذلك بنجاح - وبالتالي فإن المكالمة قبل إغلاق الصفحة - هي مسألة خاصة بها ، وهو بحث عن "onbeforeunload ajax" على ذلك ، يجب أن تسفر عن بعض النتائج.

  • ستبدأ مكالمة AJAX في العد التنازلي قائلاً إن جلسة هذا المستخدم على وشك الموت ، على سبيل المثال ، خمسة عشر ثانية.

  • إذا كان المستخدم يغادر موقعك ، فسيطبق العد التنازلي.

  • إذا كان المستخدم يذهب إلى صفحة مختلفة على موقعك ، فأنت تقوم بمسح العد التنازلي "Die" عند تقديم الصفحة التالية.

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

الفكرة الثانية كيفية تنفيذ هذا هي وضع مهلة منخفضة للغاية في الجلسات (على سبيل المثال 90 ثانية) ، ووضع iframe في كل صفحة تخدمها. أن iframe سيقوم بإجراء مكالمة إلى الصفحة كل 60 ثانية.

هذا من شأنه أن يعمل بدون JavaScript ، ولكن يمكن أن يخلق أصوات النقر المزعجة في الإصدارات القديمة من Internet Explorer (لا أعرف ما إذا كان ذلك توقف في 6 أو 7؟)

لا يمكنك (ولكن جلساتك ستنتقل تلقائيًا بعد فترة من الوقت ؛ حتى تتمكن من ضبط المهلة على وقت قصير).

مما أعرفه عن PHP (وهو ليس كثيرًا) هل يعرف تطبيقك أنه غادر الموقع؟ إذا ذهبت إلى someotherwebsite.com ، فلن يتم استدعاء الكود الخاص بك مرة أخرى حتى يعود.

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

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

امل ان يساعد

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