كيف يمكنني تعيين ملف تعريف الارتباط ومن ثم إعادة توجيه في PHP?

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

  •  03-07-2019
  •  | 
  •  

سؤال

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

if($form_submitted) {
    ...
    setcookie('type_id', $new_type_id, time() + 60*60*24*30);
    header("Location: $url");
    exit;
}

علما بأن setcookie يعود true في كلتا الحالتين و أنا لا أحصل على أخطاء/الإنذارات/إشعارات.

تحرير: أنا باستخدام Unix/Apache/MySQL/PHP

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

المحلول

إذا كان لديك الإنسان عناوين url أو المجلدات الفرعية (مثل www.domain.com/path1/path2/), ثم يجب عليك تعيين مسار ملف تعريف الارتباط إلى / العمل على كافة المسارات ، وليس مجرد الحالي.

if($form_submitted) {
    ...
    setcookie('type_id', $new_type_id, time() + 60*60*24*30, '/');
    header("Location: $url");
    exit;
}

من PHP دليل:

المسار على الخادم الذي كوكي سوف تكون متاحة.إذا تم تعيين إلى '/', كوكي سوف تكون متاحة داخل النطاق بأكمله .إذا تم تعيين إلى '/foo/', كوكي سيتم فقط المتاحة داخل /foo/ دليل و كل الدلائل الفرعية مثل /foo/شريط/ من المجال .الافتراضي القيمة الحالية دليل كوكي في.

نصائح أخرى

أفترض كنت تقوم بتشغيل IIS?هناك تعرف علة مع IIS إصدارات أقل من 7 عند محاولة تعيين كلا كوكي و رأس موقع في نفس الطلب.

http://support.microsoft.com/kb/q176113/

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

المخاطر الشائعة:

ملفات تعريف الارتباط لن تصبح مرئية حتى التحميل من صفحة ملف تعريف الارتباط يجب أن تكون مرئية.لاختبار ما إذا كان ملف تعريف الارتباط بنجاح مجموعة, الاختيار ملفات تعريف الارتباط على التالي تحميل الصفحة قبل انتهاء صلاحية ملف تعريف الارتباط.تنتهي يتم تعيين الوقت عبر تنتهي المعلمة.طريقة لطيفة تصحيح وجود ملفات تعريف الارتباط هو ببساطة الاتصال print_r($_COOKIE);.

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

    header("refresh: 2; url=$url");
    setcookie('type_id', $new_type_id, time() + 60*60*24*30, '/');
    echo "Processing, please wait...";

استخدام محدد موقع معلومات نسبي في رأس:

@Header("Location: orders_9090_1.php");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top