سؤال

أقوم بإنشاء صندوق بريد POP3 بلغة PHP.لدي ما يلي ملفات:

  • server_access.php (جلب رسائل البريد من خادم POP3)
  • data_access.php (الذي يجلب/يكتب الرسائل إلى قاعدة البيانات المحلية)
  • mime_parser.php (يقوم بتوزيع محتوى MIME)
  • core.php (يستخدم الملفات المذكورة أعلاه ويخزن البريد الذي تم تحليله كمصفوفة مساعدة تسمى $inbox)

الآن، لدي الصفحات mailbox.php لإظهار البريد الوارد وshowmail.php لعرض كل بريد.يتم تخزين بيانات اعتماد المستخدم في ملف .ini واستخدامها عند الضرورة.الأمر هو أنني أقوم بإجراء require_once('core.php') في كل من mailbox.php وshowmail.php

أنا قادر على عرض البريد الوارد (على سبيل المثال.يحتوي $inbox على قيم)، ومع ذلك، إذا اخترت قراءة بريد (نافذة منبثقة لـ showmail.php)، فإن $inbox عبارة عن مصفوفة فارغة.

يتم تعريف $inbox على أنه مصفوفة ثابتة في core.php

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

المحلول

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

ما يبدو أنك تتحدث عنه هو استمرار البيانات عبر طلبات HTTP المتعددة.البيانات الثابتة لن تفعل ذلك لك.هذا هو الغرض من بيانات $_SESSION.

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

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

السيناريو 1:mailbox.php

session_start();
$_SESSION['mailbox'] = array( /* messages */ );

السيناريو 2:showmail.php

session_start();
$mailbox = $_SESSION['mailbox'];

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

نصائح أخرى

تحتاج جلسات php إلى مكان لتخزين بيانات الجلسة بين الطلبات.في حالتك، فهو مجلد temp\php\session\ في الدليل الرئيسي لديك.إما أن تقوم بإنشاء هذا المجلد أو تغيير session.save_path في php.ini للإشارة إلى دليل صالح.

إذا كان لديك core يوفر الملف البيانات الصحيحة إلى mailbox.php، ولكن ليس showmail.php، فهو مرتبط بشيء تفعله (أو لا تفعله) في showmail.php.

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