أجهزة الكمبيوتر شبابيك إنترنت

الجلسات. وصف مفصل للعملية وشرح الآلية. تأمين معرف الجلسة في PHP Organization inurl guestbook php phpsessid

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

ما هي الدورة في php

تُستخدم الجلسات لتخزين البيانات المؤقتة (على سبيل المثال ، دخول المستخدم إلى الموقع) عند التنقل بين صفحات نفس الموقع. عند استخدام الجلسات ، يتم حفظ البيانات في ملفات مؤقتة على الخادم.
في أغلب الأحيان ، تُستخدم الجلسات (وملفات تعريف الارتباط أيضًا) عند إنشاء متاجر ومنتديات ولوحات رسائل وشبكات اجتماعية ومدونات وموارد أخرى عبر الإنترنت. إن الراحة في نظام الجلسة هي تخزين المعلومات المؤقتة للمستخدم / العميل الذي تم تسجيل دخوله ، والتي يمكن الوصول السريع إلى البيانات المتعلقة بها لفترة معينة. الجلسة لها تاريخ انتهاء صلاحية طبيعي - حتى يتم إغلاق المتصفح. إذا أغلقت الصفحة فقط ، فعند فتح الموقع ، ستظل البيانات المتعلقة بالمستخدم / المشتري متاحة.

منطق الجلسة

الجلسة (أو الجلسة) هي نوع من تخزين البيانات المؤقت. أحذرك على الفور من أن الأمر يستحق حفظ كمية صغيرة من البيانات. على سبيل المثال ، تسجيل الدخول وكلمة المرور للمستخدم الذي قام بتسجيل الدخول أو الرقم التسلسلي الخاص به في قاعدة البيانات.

مثال على العمل
1. يقوم المستخدم بإدخال اسم مستخدم وكلمة مرور ويدخل الموقع
2. يتم حفظ البيانات مع تسجيل الدخول وكلمة المرور في جلسة إحدى صفحات الموقع:

ملف index.php

Session_start () ، // يجب أن يحتوي كل ملف تريد استخدام بيانات الجلسة فيه على أمر "بدء الجلسة" في بداية الكود

$ تسجيل الدخول = "admin" ؛
كلمة مرور دولار = "تمرير" ؛
$ _SESSION ["login"] = $ login؛ // حفظ المتغير الذي يحتوي على تسجيل الدخول
$ _SESSION ["password"] = كلمة مرور $ ؛ // حفظ المتغير الذي يحتوي على كلمة المرور

3. عندما تنتقل إلى صفحة أخرى في الموقع ، ستكون هذه البيانات متاحة أيضًا:

ملف example.php(أو أي صفحة أخرى)

صدى "تسجيل الدخول الخاص بك". $ _ SESSION ["تسجيل الدخول"] ؛ // سيعرض "تسجيل الدخول الخاص بك هو المسؤول" ، على الرغم من أننا لم نسجل البيانات في هذه الصفحة!
انظر ، الأمر بسيط!

4. إذا كنت تريد مسح بيانات الجلسة ، فهذا يكفي:

ملف example.php

Session_start () ، // "ابدأ الجلسة" مرة أخرى

Unset ($ _ SESSION ["تسجيل الدخول"]) ؛ // هكذا كان المتغير غير مسجل أو "مُتلف"
صدى "تسجيل الدخول". $ _ SESSION ["تسجيل الدخول"] ؛ // سيعرض "تسجيل دخولك". نظرًا لأننا قمنا بتدميرها في السطر الأخير ، فلا توجد بيانات أيضًا.

Session_destroy () ، // تدمير الجلسة. اختفت جميع البيانات بما في ذلك $ _SESSION ["كلمة المرور"]. عند الطلب ، سيتم عرض خطأ
بشكل عام ، يشبه هذا النقل طريقة POST ، لكن لم تعد مضطرًا إلى كتابة الكثير من التعليمات البرمجية غير الضرورية ، ويتم تخزين جميع البيانات المنقولة من صفحة إلى أخرى في ملفات مؤقتة على الخادم. مرة أخرى ، يجب أن تحتوي الجلسات على كميات صغيرة من البيانات ، لذا فهي مناسبة لتخزين اسم المستخدم / كلمة المرور وعربة التسوق وكميات صغيرة أخرى.

تمرير قيمة أو مصفوفة باستخدام جلسة PHP

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

نحن نستخدم صفحة بداية معينة مرة أخرى index.php

Session_start () ،

$ r = مجموعة ("واحد" ، "اثنان" ، "ثلاثة") ؛

$ _SESSION ["arr"] = $ r؛

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

مستلم الملف ، الصفحة test.phpحيث نفتح المصفوفة

Session_start () ،
print_r ($ _ SESSION ["arr"])؛
// سيخرج
/*
مجموعة مصفوفة
=> واحد
=> اثنان
=> ثلاثة
*/
?>
قد ترغب في التعرف على برنامج تعليمي حول. بشكل عام ، يجب أن يكون كل شيء واضحًا.

وظائف أخرى للعمل مع الجلسات

session_unregister (سلسلة نصية)- تنسى الجلسة قيمة المتغير الشامل المحدد ؛
session_destroy ()- تم إتلاف الجلسة (على سبيل المثال ، إذا غادر المستخدم النظام بالضغط على زر تسجيل الخروج) ؛
session_set_cookie_params (عمر int [، مسار سلسلة [، نطاق سلسلة]])- باستخدام هذه الوظيفة ، يمكنك تعيين المدة التي ستستمر فيها الجلسة عن طريق تعيين طابع unix_timestamp الذي يحدد وقت وفاة الجلسة.

قائمة وظائف العمل مع الجلسات (الدورة) في php
session_cache_expire - تُرجع انتهاء صلاحية ذاكرة التخزين المؤقت الحالية
session_cache_limiter - احصل على و / أو عيّن حد ذاكرة التخزين المؤقت الحالي
session_commit - اسم مستعار لـ session_write_close ()
session_decode - ترميز بيانات الجلسة من السلسلة
session_destroy - تدمير جميع البيانات المسجلة للجلسة
session_encode - لتشفير بيانات الجلسة الحالية كسلسلة
session_get_cookie_params - احصل على معلمات ملفات تعريف الارتباط للجلسة
session_id - تحصل و / أو تعين معرّف الجلسة الحالية
session_is_registered - تحدد ما إذا تم تسجيل متغير في الجلسة
Session_module_name - يحصل و / أو يثبت وحدة الدورة الحالية
اسم الجلسة - يحصل و / أو يحدد اسم الجلسة الحالية
session_regenerate_id - يعدل معرف الجلسة الحالية بالمعرّف الذي تم إنشاؤه حديثًا
session_register - تسجل متغيرًا واحدًا أو أكثر للجلسة الحالية
Session_save_path - يحصل و / أو يحدد المسار لحفظ الجلسة الحالية
session_set_cookie_params - تحدد معلمات ملفات تعريف الارتباط للجلسة
session_set_save_handler - تحدد وظائف تخزين الجلسة على مستوى المستخدم
session_start - لتهيئة بيانات الجلسة
session_unregister - إلغاء تسجيل متغير من الجلسة الحالية
session_unset - لتحرير جميع متغيرات الجلسة
session_write_close - يكتب بيانات الجلسة ونهاية الجلسة

أمثلة على الجلسات

عداد الصفحات أثناء الجلسة. مثال واضح للعمل. ومع ذلك ، بعد إغلاق المتصفح ، سيبدأ العد التنازلي من جديد.

عدد الزيارات إلى صفحة واحدة خلال جلسة واحدة

// مثال بسيط على استخدام الجلسات بدون ملفات تعريف الارتباط.
اسم الجلسة ("اختبار") ؛
جلسة_ستارت () ،
$ _SESSION ["count"] = @ $ _ جلسة ["count"] + 1 ؛
?>

عداد


في الجلسة الحالية مع المتصفح ، قمت بفتح هذه الصفحة
مرة (مرات).
أغلق المستعرض الخاص بك لإعادة تعيين هذا العداد.
انقر هنا لتحديث الصفحة!
مع كل انتقال ، سيزداد العداد بمقدار 1)

شكرا للانتباه! حظا سعيدا في مساعيكم!

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

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

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

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

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

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

تستخدم الجلسات طرقًا قياسية ومعروفة لنقل البيانات. في الواقع ، ببساطة لا يوجد آخرون.
المعرف هو متغير عادي. افتراضيًا ، يكون اسمه PHPSESSID.
مهمة PHP هي إرسالها إلى المتصفح لإعادتها مع الطلب التالي. من قسم الأسئلة الشائعة الذي سبق ذكره ، من الواضح أنه لا يمكن تمرير المتغير إلا بطريقتين: في ملفات تعريف الارتباط أو طلب POST / GET.
تستخدم PHP كلا الخيارين.

هناك إعدادان في php.ini مسؤولان عن هذا:

session.use_cookies - إذا كانت تساوي 1 ، فإن PHP تمرر المعرف إلى ملفات تعريف الارتباط ، إذا كانت 0 - ثم لا.
session.use_trans_sid إذا كانت تساوي 1 ، ثم تمررها PHP عن طريق إلحاقها بعناوين URL ونماذج ، إذا كانت القيمة 0 - ثم لا.

يمكنك تغيير هذه المعلمات وغيرها من معلمات الجلسة بنفس طريقة إعدادات PHP الأخرى - في ملف php.ini ، وكذلك باستخدام الأمر ini_set () أو في ملفات تكوين خادم الويب

إذا تم تمكين الأول فقط ، فعندئذ في بداية الجلسة (في كل مكالمة جلسة_ستارت ()) يتم تعيين ملفات تعريف الارتباط للعميل. يقوم المستعرض بإرجاع ملف تعريف الارتباط هذا بشكل صحيح مع كل طلب تالٍ ، ولغة PHP معرّف جلسة. تبدأ المشاكل إذا لم يُرجع المتصفح ملفات تعريف الارتباط. في هذه الحالة ، بدون تلقي ملفات تعريف الارتباط بمعرف ، ستبدأ PHP جلسة جديدة طوال الوقت ، ولن تعمل الآلية.

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

فهرس

تحول الى

فهرس

ويتم إضافة حقل مخفي إلى النماذج

من الناحية النظرية ، في جلساتنا المنزلية معك على ملفات تعريف الارتباط وقاعدة بيانات ، يمكنك تعيين نقل المعرف يدويًا لجميع الروابط بأيديكم - وبعد ذلك ستعمل جلساتنا الخاصة بغض النظر عن ملفات تعريف الارتباط. لكن ، كما ترى - يكون الأمر أكثر متعة عندما يقوم شخص آخر بهذا العمل؟ ؛-)

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

مع الانتهاء من نقل المعرف. الآن يبقى ربط ملف بالبيانات على جانب الخادم به. سوف تقوم PHP بهذا من أجلنا. يكفي أن تكتب فقط:

جلسة_ستارت () ،
$ _SESSION ["test"] = "أهلاً بالعالم!" ؛

وستقوم PHP بكتابة متغير الاختبار إلى الملف المرتبط بهذه الجلسة.

هناك نقطة مهمة جدا هنا.

مجموعة مصفوفة _SESSION دولار- مميز.
في الواقع ، يحتوي على المتغيرات التي نريد إتاحتها في نصوص مختلفة.
لوضع متغير في جلسة ما ، ما عليك سوى تخصيصه لعنصر من المصفوفة $ _SESSION.
للحصول على قيمتها ، يكفي الرجوع إلى نفس العنصر. سيكون المثال أدناه.

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

جلسة_ستارت () ،

صدى صوت "لقد قمت بتحديث هذه الصفحة"... _SESSION $ ["العداد"] ++. " بمجرد. " ؛
صدى صوت "
تحديث "؛
?>

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

من أجل الوصول إلى متغيرات الجلسة على أي صفحات من الموقع ، تحتاج إلى كتابة سطر واحد فقط (!) في بداية كل ملف نحتاج فيه إلى جلسات:

جلسة_ستارت () ،

جلسة_ستارت () ،
إذا ($ _SESSION ["مصرح به"]<> 1 ) {
header ("الموقع: /auth.php") ؛
خروج؛
}

إزالة المتغيرات من الجلسة. إذا كان لديك register_globals = إيقاف ، فاكتب فقط

unset ($ _ SESSION ["var"]) ؛

إذا لم يكن ثم مجاورمعها تحتاج أن تكتب:

session_unregister ("var") ؛

من المهم جدًا فهم ما هي الجلسات التي يجب استخدامها وما لا.

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

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

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

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

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

ثالثا لا يستحق بدء الجلسات عشوائيا لكل من يدخل الموقع. سيؤدي هذا إلى إنشاء حمولة غير ضرورية تمامًا. لا تستخدم جلسات للتفاهات - على سبيل المثال ، في العدادات. ما هي جلسات مكالمات spilogue ، بالطبع ، بناءً على إحصائيات المكالمات ، وليس باستخدام آلية جلسة مشابهة لـ PHP.

بالإضافة إلى ذلك ، لنأخذ محرك بحث يقوم بفهرسة موقعك. إذا كان روبوت البحث لا يدعم ملفات تعريف الارتباط ، فستقوم PHP افتراضيًا بتزويد PHPSESSID بالروابط ، والتي قد لا تكون ممتعة للغاية لمحرك البحث ، والتي ، وفقًا للشائعات ، لا تفضل الروابط الديناميكية على أي حال ، ولكن هنا ، بشكل عام ، مع كل مكالمة - عنوان جديد!

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

للقيام بذلك ، بدلا من مجرد جلسة_ستارت ()نحن نكتب:

if (isset ($ _ REQUEST [session_name ()])) session_start () ؛

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

إذا كان الاسم والسقيفة صحيحين - اكتب جلسة_ستارت () !

الأخطاء الأكثر شيوعًا التي تقدمها PHP عند محاولة العمل مع الجلسات هي:
اثنين منهم،

تحذير: لا يمكن إرسال ملف تعريف الارتباط للجلسة - تم إرسال الرؤوس بالفعل
تحذير: لا يمكن إرسال محدد ذاكرة التخزين المؤقت للجلسة - تم إرسال الرؤوس بالفعل

بسبب نفس السبب ، يتم وصف الحل في هذه الحقيقة

تحذير: فشل فتح (/ tmp \ sess_SID، O_RDWR): لا يوجد مثل هذا الملف أو الدليل (2) في full_script_path على رقم السطر

كانت تبدو من قبل

تحذير: فشل في كتابة بيانات الجلسة (الملفات). يرجى التحقق من صحة الإعداد الحالي لـ session.save_path (/ tmp) ,

إذا تمت ترجمته من اللغة الإنجليزية ، فإنه يشرح المشكلة بالتفصيل: المسار المحدد في php.ini إلى الدليل حيث تمت كتابة ملفات الجلسة غير متوفر. هذا الخطأ هو الأسهل لإصلاح. ما عليك سوى كتابة دليل موجود وقابل للكتابة ، على سبيل المثال ،

session.save_path = c: \ windows \ temp

ولا تنس إعادة تشغيل Apache بعد ذلك.

كما اتضح ، لا حدود للذكاء البشري ، وبالتالي علي أن أوضح:
رسالة الخطأ الثالثة (تعذر العثور على الدليل) ستؤدي إلى "UNAVAILABLE" إلى أول رسالتين ، لأن رسالة الخطأ يتم إخراجها إلى المتصفح ولا يمكنك استخدام الرؤوس بعده. لذلك ، لا تتسرع في البحث عن نتيجة مبكرة ، ولكن اكتب أولاً المسار الصحيح!

المشكلة التالية الأكثر شيوعًا في الجلسات هي الإرث الثقيل لـ register_globals. لا تعطِ متغيرات البرنامج النصي نفس أسماء مؤشرات المصفوفة $ _SESSION!

مع register_globals = on ، ستحل القيم محل بعضها البعض وستشعر بالارتباك.

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

ini_set ("display_errors"، 1) ؛
error_reporting (E_ALL) ،

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

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

بشكل عام ، إذا كانت جلساتك "لا تعمل" ، فحاول أولاً نقل معرف الجلسة يدويًا ، أي إنشاء ارتباط وتعيين معرف له:

جلسة_ستارت () ،
if (! isset ($ _ SESSION ["counter"])) $ _SESSION ["counter"] = 0؛
صدى صوت "لقد قمت بتحديث هذه الصفحة"... _SESSION $ ["العداد"] ++. " بمجرد.

تحديث "؛
?>

عند القيام بذلك ، تأكد من عدم تمكين التوجيه session.use_only_cookies ، مما يمنع PHP من قبول معرف الجلسة إذا تم تمريره عبر عنوان URL.

إذا لم ينجح هذا المثال ، فإن المشكلة إما أن تكون عادية الأخطاء المطبعية(نصف "المشكلات" المتعلقة بالجلسات تأتي من اسم متغير به أخطاء إملائية) ، أو في إصدار قديم جدًا من PHP: ظهر دعم الجلسة في الإصدار 4.0 ، والمصفوفة _SESSION دولار- في الإصدار 4.1 (تم استخدامه سابقًا HTTP_SESSION_VARS دولار).

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

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

تعيين ملف تعريف الارتباط: PHPSESSID = prlgdfbvlg5fbsbshch6hj0cq6 ؛

تعيين ملف تعريف الارتباط: PHPSESSID = prlgdfbvlg5fbsbshch6hj0cq6 ؛ المسار = /

(إذا كنت تطلب برنامج نصي ليس من الدليل الجذر)
يجب أن تبدو استجابة الخادم بالشكل

ملف تعريف الارتباط: PHPSESSID = prlgdfbvlg5fbsbshch6hj0cq6

ملف تعريف الارتباط: PHPSESSID = prlgdfbvlg5fbsbshch6hj0cq6 ؛ ب = ب

إذا كان المستعرض يعرض ملفات تعريف الارتباط بخلاف معرف الجلسة.

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

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

لذلك ، تحتاج إلى إضافة المعرف يدويًا ، على سبيل المثال ، مثل هذا:

header ("Location: /script.php؟". session_name (). "=". session_id ()) ؛

أيضًا ، نادر جدًا وغير واضح تمامًا من أين أتت ، المشكلة هي أن إعداد session.save_handler له قيمة أخرى غير الملفات. إذا لم يكن الأمر كذلك ، فقم بتصحيحه.

  • بالإضافة إلى ملفات تعريف الارتباط ، ترسل آلية الجلسة أيضًا رؤوسًا تمنع التخزين المؤقت للصفحة (نفس محدد ذاكرة التخزين المؤقت). بالنسبة لـ html ، هذا صحيح وضروري. ولكن عندما تحاول إرسال ملف ببرنامج نصي يتحقق من الإذن ، يرفض Internet Explorer تنزيله. إنه بسبب هذا العنوان. مكالمة
    session_cache_limiter ("خاصة") ؛
    يجب حل المشكلة قبل بدء الجلسة.
  • الغريب ، ولكن في الصفيف _SESSION دولارلا يمكنك استخدام المؤشرات الرقمية - $ _SESSION [1]، $ _SESSION ["10"]- الجلسات لن تعمل.
  • في مكان ما بين 4.2 و 5.0 لم يكن من الممكن تعيين session.use_trans_sid مع ini_set ()... بدءًا من 5.0 أصبح ممكنًا بالفعل مرة أخرى.
  • قبل الإصدار 4.3.3 ، كانت ملفات تعريف الارتباط PHP ترسل ملفات تعريف الارتباط فقط إذا لم يكن الطلب يحتوي على معرّف في بداية الجلسة. الآن يتم إرسال ملفات تعريف الارتباط في كل مكالمة بدء الجلسة

    إذا كان لديك المزيد من الأسئلة أو كان هناك شيء غير واضح - مرحبًا بكم في

منذ البداية ، قبل الجميع PHP بشكل كبير ، ولكن بمجرد أن بدأوا في إنشاء مشاريع كبيرة بما يكفي بهذه اللغة ، واجه المطورون مشكلة جديدة - لم يكن هناك مفهوم للمتغيرات العالمية في PHP! وهذا يعني أنه تم تنفيذ برنامج نصي ، وإرسال الصفحة التي تم إنشاؤها إلى العميل ، وتم إتلاف جميع الموارد التي يستخدمها هذا البرنامج النصي. للتوضيح ، لنفترض أن هناك صفحتين على نفس الموقع ، index.php و dothings.php. تبدو مصادر هذه الصفحات كما يلي:

index.php dothings.php

إذا قمت بتنفيذ هذين النصين ، فسنرى في الصفحة الأولى النقش "تم تكليفي لـ index.php" ، وستكون الصفحة الثانية فارغة.

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

لن أخوض في القضايا التكنولوجية الخاصة بهيكل آلية الجلسة ، لكنني سأصف فقط كيفية العمل بشكل صحيح مع الجلسات في PHP.

كيف تعمل مع الجلسات؟

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

"تحذير: فشل فتح (/ var / state / php / sess_6f71d1dbb52fa88481e752af7f384db0، O_RDWR): لا يوجد مثل هذا الملف أو الدليل (2)".

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

يجب أن يحتوي أي نص برمجي يستخدم متغيرات (بيانات) من الجلسات على السطر التالي:

Session_start () ،

يخبر هذا الأمر الخادم أن الصفحة المحددة تحتاج إلى جميع المتغيرات المرتبطة بالمستخدم المحدد (المستعرض). يأخذ الخادم هذه المتغيرات من الملف ويجعلها متاحة. من المهم جدًا فتح جلسة قبل إرسال أي بيانات إلى المستخدم ؛ في الممارسة العملية ، هذا يعني أنه من المستحسن استدعاء وظيفة session_start () في بداية الصفحة ، على سبيل المثال:

Session_start () ، ؟> ... لتعيين الدليل الذي سيتم حفظ ملفات الجلسة فيه ، استخدم وظيفة session_save_path (): session_save_path ($ _ SERVER ["DOCUMENT_ROOT"]. "/ Session") ؛ جلسة_ستارت () ،

بمجرد أن تبدأ الجلسة ، يمكنك تعيين المتغيرات العامة. عند تعيين قيمة لأي حقل في المصفوفة $ _SESSION ، يتم تسجيل متغير بنفس الاسم تلقائيًا كمتغير جلسة. هذه المجموعة متاحة في جميع الصفحات التي تستخدم الجلسة. على سبيل المثال ، دعنا نحلل البرنامج:

index.php كل شيء جيد. تم تحميل الجلسة! دعنا نمر ، دعنا نرى ما هو هناك:

dothings.php

عند تشغيل هذه الملفات بالتتابع ، سينتج عن أول نص برمجي "index.php" النتيجة التالية:

كل شيء جيد. تم تحميل الجلسة! دعنا نمر ، دعنا نرى ما هو هناك:

و "dothings.php" الثاني هو هذا:

لقد سئلت في index.php

المتغير $ a متاح الآن في جميع صفحات هذا الموقع التي بدأت الجلسات.

وظائف وتقنيات مفيدة أخرى للعمل مع الجلسات:

  • unset ($ _ SESSION ["a"])- الدورة "تنسى" قيمة المتغير الذي حددته الجلسة ؛
  • session_destroy ()- تم إتلاف الجلسة (على سبيل المثال ، إذا غادر المستخدم النظام بالضغط على زر "الخروج") ؛
  • session_set_cookie_params (عمر int [، مسار سلسلة [، نطاق سلسلة]])- باستخدام هذه الوظيفة ، يمكنك تعيين المدة التي ستظل فيها الجلسة "حية" من خلال ضبط unix_timestamp ، الذي يحدد الوقت الذي "تموت فيه" الجلسة. بشكل افتراضي ، "تبقى" الجلسة حتى يغلق العميل نافذة المتصفح.
  • session_write_close ()- تسجيل متغيرات الجلسة واغلاقها. يعد ذلك ضروريًا لفتح الموقع في نافذة جديدة ، إذا كانت الصفحة تقوم بمعالجة طويلة وتم حظر ملف الجلسة لمتصفحك.

أمثلة على

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

إذن المستخدم

يتم طرح أسئلة حول ترخيص المستخدم باستخدام جلسات PHP باستمرار في مؤتمرات برمجة الويب. آلية تخويل المستخدمين في النظام باستخدام الجلسات جيدة جدًا من وجهة نظر أمنية (انظر القسم).

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

أمثلة: index.php ادخل رقمك السري

تسجيل الدخول:
كلمه السر:


Authorize.php الصفحة ... header ("Location: secretplace.php") ؛ خروج؛ )) // إذا كان هناك خطأ ما ، فسيتلقى المستخدم // رسالة خطأ. ؟> لقد أدخلت كلمة مرور غير صحيحة!

secretplace.php مهلا،انت في صفحة سرية !!! :)

حماية

لذلك ، نحن قادرون على نقل معرف من صفحة (نص PHP) إلى أخرى (حتى المكالمة التالية من موقعنا) ، مما يعني أنه يمكننا التمييز بين جميع زوار الموقع. نظرًا لأن معرّف الجلسة هو رقم كبير جدًا (128 بت) ، فلا توجد فرصة عمليًا في أن يكون هذا الرقم قويًا. لذلك ، يُترك للمهاجم الخيارات التالية:

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

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

ومع ذلك ، غالبًا ما يتم خداع PHP. لنلقِ نظرة على نقاط الاختراق المحتملة في برنامج ترخيص المستخدم:

  • ملف authorize.php - محاولة لفرض كلمة مرور باستخدام برنامج نصي تابع لجهة خارجية ؛
  • يعد ملف secretplace.php محاولة لخداع البرنامج عن طريق إدخال قيم المتغير $ logged_user في شريط عنوان المتصفح ، على سبيل المثال:
    "http://www.yoursite.ru/secretplace.php؟ logged_user = هاكر"

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

كيفية "التصحيح" حفرة رقم 1؟

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

authorize.php V2 الصفحة ... header ("Location: secretplace.php") ؛ خروج؛ )))؟> لقد أدخلت كلمة مرور غير صحيحة!


كيف تتخلص من "الفتحة" رقم 2؟

لنفترض أن لديك موقعًا على شبكة الإنترنت حيث يمكن لكل إنسان التسجيل للنشر في منتدى. بطبيعة الحال ، يتمتع بعض المستخدمين (المشرفين والمشرفين) في المنتدى بفرص أكثر من غيرهم ، على سبيل المثال ، يمكنهم حذف الرسائل من مستخدمين آخرين. تقوم بتخزين مستوى وصول المستخدم في الجلسة ، في المتغير $ user_status ، حيث يتوافق $ user_status = 10 مع الوصول الكامل إلى النظام. يحتاج المهاجم الذي يأتي إلى الموقع فقط إلى التسجيل بطريقة منتظمة ، ثم إضافة شريط عنوان المتصفح ؟ user_status = 10... إذن لديك مسؤول جديد في منتداك!

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

secretplace.php V2 متغير unset ($ _ SESSION ["logged_user"])؛ // افتح جلسة session_start () ؛ / * لا يمكنك الانتقال إلى هذه الصفحة فقط ... إذا لم يكن اسم المستخدم مسجلاً ، فسنقوم بإعادة توجيهه إلى صفحة index.php لإدخال اسم المستخدم وكلمة المرور ... هنا في الواقع يمكنك فعل الكثير ، من أجل على سبيل المثال ، تذكر عنوان IP الخاص بالمستخدم ، وبعد المحاولات الثالثة للوصول إلى الملفات ، قم بحظره. * / if (! isset ($ _ SESSION ["logged_user"])) (header ("Location: index.php")؛ exit؛)؟> مهلا،، أنت في صفحة سرية!

النتائج

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

أمثلة على

?>
// الإدراج التلقائي لـ SIDs في الروابط. ini_set ("session.use_trans_sid" ، صحيح) ؛ جلسة_ستارت () ، ؟> انقر هنا!
انقر هنا !!



// مثال على العمل مع الجلسات. جلسة_ستارت () ، // إذا تمت زيارة الموقع للتو ، فأعد تعيين العداد. if (! isset ($ _ SESSION ["count"])) $ _SESSION ["count"] = 0؛ // زيادة العداد في الجلسة. $ _SESSION ["count"] = $ _SESSION ["count"] + 1 ؛ ؟>

عداد

مرة (مرات).
أغلق المستعرض الخاص بك لإعادة تعيين العداد.
"target =" _blank "> افتح نافذة متصفح فرعية.
// مثال بسيط على استخدام الجلسات بدون ملفات تعريف الارتباط. اسم الجلسة ("اختبار") ؛ جلسة_ستارت () ، $ _SESSION ["count"] = @ $ _ جلسة ["count"] + 1 ؛ ؟>

عداد

في الجلسة الحالية مع المتصفح ، قمت بفتح هذه الصفحةمرة (مرات).
أغلق المستعرض الخاص بك لإعادة تعيين هذا العداد.
?"> انقر هنا لتحديث الصفحة!

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

تستخدم الجلسات تقنية بسيطة. عند إنشاء جلسة ، ستحصل PHP إما على جلسة حالية باستخدام المعرف الذي تم تمريره (عادةً من ملف تعريف ارتباط الجلسة) أو ، إذا تم تمرير أي شيء ، فسيتم إنشاء جلسة جديدة. ستقوم PHP بملء $ _SESSION superglobal بمعلومات الجلسة بعد بدء الجلسة. عند الخروج من PHP ، ستعمل تلقائيًا على إجراء تسلسل لمحتويات $ _SESSION superglobal وإرسالها للتخزين باستخدام معالج جلسة لتسجيل الجلسة.

بشكل افتراضي ، تستخدم PHP معالج الملفات الداخلية لحفظ الجلسات ، والتي يتم تعيينها في متغير session.save_handler INI. يحفظ هذا المعالج البيانات على الخادم في الدليل المحدد في توجيه تكوين session.save_path.

يمكن بدء الجلسات يدويًا باستخدام الوظيفة جلسة_ستارت ()... إذا تم تعيين التوجيه session.auto_start على 1 ، فستبدأ الجلسة تلقائيًا في بداية الطلب.

تنتهي الجلسة عادةً عند انتهاء PHP من تنفيذ البرنامج النصي ، ولكن يمكن أيضًا إنهاؤها يدويًا باستخدام الوظيفة session_write_close ().

تحذير

انتباه

تعليق:

تمنع الجلسات التي تستخدم الملفات (افتراضيًا في PHP) ملف الجلسة فور فتح الجلسة باستخدام الوظيفة جلسة_ستارت ()أو بشكل غير مباشر عن طريق تحديد session.auto_start. بعد الحظر ، لا يمكن لأي برنامج نصي آخر الوصول إلى ملف الجلسة نفسه حتى يتم إغلاقه أو عند انتهاء البرنامج النصي أو عند استدعاء وظيفة. session_write_close ().

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

لا أستطيع معرفة السبب ، لكنني جربت جميع إجابات / google .. لم أتمكن من العثور على أي شيء. هذا هو الوضع:

كود المضيف المحلي

نتيجة:

session_id () متسلسلة عبر صفحات التطبيق وعند تحديث الصفحة. يتطابق $ _COOKIE ["PHPSESSID"] مع session_id ()

خادم مباشر

Session_start () ، echo session_id () ؛ print_r ($ _ COOKIE ["PHPSESSID"]) ؛

نتيجة:

يتغير session_id () عند كل طلب أو إعادة تحميل صفحة أو زيارة صفحة أخرى. $ _COOKIE ["PHPSESSID"] فارغ / فارغ. يتم استخدام نفس الرمز في أعلى الصفحة. لا يوجد محتوى آخر.

أعطتني هذه المشكلة مشكلة حقيقية ، فما نوع تكوين الخادم أو الخطأ الذي قد يتسبب في ذلك؟ لماذا ملف تعريف الارتباط PHPSESSID فارغ ، وأعتقد أنه بسبب إعادة تعيين session_id () المقترنة في كل طلب أيضًا؟

أي مساعدة من فضلك يا شباب!

تحرير: لقد أنشأت ملف اختبار بسيطًا بثلاثة أسطر على خادمي المحلي البعيد. هذا لا علاقة له برمز بلدي. لا يزال $ _COOKIE ["PHPSESSID"] فارغًا وتحدث جلسة جديدة () للمضيف الحقيقي في كل تحديث.

error_reporting SET TO ALL أحصل على هذا على المضيف المباشر:

إشعار: فهرس غير محدد: PHPSESSID في /home/vivaplug/public_html/dev/wp-content/plugins/test.php على السطر 5

رؤوس جوجل كروم

المضيف المحلي

عنوان URL للطلب: http: //localhost/wp-content/plugins/test.php طريقة الطلب: GET Status Code: 200 OK طلب Headersview source قبول: text / html، application / xhtml + xml، application / xml؛ q = 0.9، image / webp، * / *؛ q = 0.8 ترميز القبول: gzip، deflate، sdch Accept-Language: en-US، en؛ q = 0.8 Cache-Control: no-cache Connection: keep-live Cookie: PHPSESSID = 68b7m4arpsacks4aetgmd3rs93 المضيف: localhost Pragma: no-cache User-Agent: Mozilla / 5.0 (Windows NT 6.1) AppleWebKit / 537.36 (KHTML ، مثل Gecko) Chrome / 30.0.1599.101 Safari / 537.36 Response HeadersView source Cache-Control: no-store، no- cache، must-revalidate، post-check = 0، pre-check = 0 Connection: Keep-Alive Content-Type: text / html التاريخ: Tue، 05 Nov 2013 07:10:51 GMT انتهاء الصلاحية: Thu، 19 Nov 1981 08 : 52: 00 GMT Keep-Alive: timeout = 5، max = 100 Pragma: no-cache الخادم: Apache / 2.4.4 (Win32) PHP / 5.4.16 ترميز النقل: Chunked X-Powered-By: PHP / 5.4 .16

قم بإزالة الخادم

عنوان URL للطلب: http: //vivaplugins.com/dev/wp-content/plugins/test.php طريقة الطلب: GET Status Code: 200 OK اطلب Headersview source Accept: text / html، application / xhtml + xml، application / xml؛ q = 0.9، image / webp، * / *؛ q = 0.8 قبول-ترميز: gzip، deflate، sdch Accept-Language: en-US، en؛ q = 0.8 Cache-Control: max-age = 0 Connection: keep- على قيد الحياة المضيف: vivaplugins.com User-Agent: Mozilla / 5.0 (Windows NT 6.1) AppleWebKit / 537.36 (KHTML ، مثل Gecko) Chrome / 30.0.1599.101 Safari / 537.36 Response HeadersView source Age: 0 Cache-Control: no-store، no -cache ، must-revalidate ، post-check = 0 ، pre-check = 0 Content-Encoding: gzip Content-Type: text / html التاريخ: الثلاثاء ، 05 نوفمبر 2013 07:07:49 GMT Pragma: no-cache Server: استضافة متقدمة بواسطة http://www.unixy.net/varnish ترميز النقل: متنوع: قبول-ترميز عبر: 1.1 ورنيش X-Cache: HIT X-Cache-Hits: 2 X-Cacheable: YES X-Powered-By : PHP / 5.4.20 X- ورنيش: 1984840969 1984839805