يستخدم مسج جيسي كوكي وسيلة صالحة لاختبار لمعرفة ما إذا تم تمكين ملفات تعريف الارتباط؟

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

  •  19-09-2019
  •  | 
  •  

سؤال

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

لذلك أحاول إيجاد حل آخر للتحقق من ملف تعريف الارتباط وأنا أفكر في استخدام مسج كوكي البرنامج المساعد. وبعد أتساءل عما إذا كان متوافقا في جميع المتصفحات (عند تمكين JS بالطبع)؟

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

المحلول

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

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

في النهاية، حاولت البرنامج المساعد JQuery Cooke في IE 6، 7، و 8، Safari 4، Google Chrome 4، Firefox 3.5، Opera 10.2 وعلى عدد قليل من التكوينات المختلفة ويعمل في كل منهم. هنا هو الرمز الذي أستخدمه:

$.cookie('test_cookie', 'cookie_value', { path: '/' });
if ($.cookie('test_cookie') == 'cookie_value') {
    // cookie worked, set/enable appropriate things
}

انها ليست مثالية، لكنني أفكر أنها ستعمل في 95٪ من الحالات. خلاف ذلك، سوف تفشل ولا تسمح لهم فقط بفعل أي شيء.

نصائح أخرى

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

أنا أحب هذه وظيفة بطانة 1:

function cookiesEnabled() {
    return $.cookie('check', 'valid', { expires: 1 }) && $.cookie('check') == 'valid';
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top