التطبيق الذي يستخدم بيانات جلسة PhpBB - لا يمكنه استخدام الرمز القصير

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

  •  07-07-2019
  •  | 
  •  

سؤال

لقد قمت بإنشاء تطبيقات ويب قبل ذلك باستخدام جلسة phpBB وبيانات المستخدم.الخطوة الشائعة هي استخدام كود مثل هذا:

define('IN_PHPBB', true);
//replace $phpbb_root_path with path to your forum
$phpbb_root_path = '../forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

ومع ذلك، من خلال تضمين common.php, ، أحمل معي عددًا كبيرًا من الأساليب الأخرى التي تتداخل مع الطرق الأخرى التي قمت بإعدادها.

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

في الأساس، كل ما علي فعله هو:

  1. تأكد من تسجيل دخول المستخدم $user->data[username] == Anonymous
  2. استخدم البيانات من "$user->data" مثل معرف المستخدم واسم الشاشة وما إلى ذلك.

هل يمكنني الاستيلاء على $user->data المصفوفة، وحفظها بطريقة أو بأخرى في جلستي الخاصة؟هل يوجد احد لديه افكار فى هذا؟شكرا لك مقدما!

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

المحلول

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

بافتراض أن الكود الخاص بك يحتوي على معالج جلسة محدد موجود بالفعل، فلا يوجد ما يمنعك من استخدام أوامر الجلسة العادية.

على سبيل المثال:$_SESSION['user_data_array'] = $user->data ;

ثم لاحقًا باستخدام بيانات الجلسة

$data = $_SESSION['user_data_array'];

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

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

نصائح أخرى

قام phpBB بتغيير خوارزمية التحقق من صحة كلمة المرور المخزنة في قاعدة البيانات من الإصدار 2.x إلى 3.0.(كانت مجرد وظيفة MD5.) ولكن إذا كان بإمكانك العثور على عنوان url شبه SDK الخاص بهم (لم يكن في متناول اليد)، فهناك منشورات هناك حول كيفية استخدام التحقق من المستخدم الخاص بهم على مستوى أعلى من التجريد مما تصفه .

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

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

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