سؤال

هذا يجب أن تعمل, لذلك أنا حقا في حيرة عن السبب في أنه لا يعمل.

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

لذا تحقق $session->is_logged_in() ثم ذهبت إلى الأمام و تعريف متغير يسمى $logged = true;لاستخدامها لاحقا.ثم استخدام $user->find_by_id($session->id) طريقة إنشاء كائن المستخدم الجديد و مخزن $user->role_level في جديد يسمى فار $role_level لسهولة الاستخدام.

كل هذا يحدث بالقرب من أعلى الصفحة.مزيد من أسفل صفحة الماضي شكل المعالجة ، وما إلى ذلك ، هو include("../_layouts/header.php") الأوامر.ثم في header.php ملف, يمكنني استخدام القليل الشيكات مثل if(!$logged) { ... } else { ... }.ومع ذلك...

أنا على الحصول على الأخطاء التالية:

Notice: Undefined variable: logged in /home/hips/html/_layouts/header.php on line 119
Notice: Undefined variable: logged in /home/hips/html/_layouts/header.php on line 131
Notice: Undefined variable: logged in /home/hips/html/_layouts/header.php on line 138

كيف يمكن أن يكون هذا ؟ أنا تحديد فأر في الملف قبل أن تشمل header.php!لا ينبغي أن تعمل ؟

لمعلوماتك, كل شيء على ما يرام حتى حاولت استخدام $logged في header.php الملف.

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

المحلول

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

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

نصائح أخرى

محاولة شيء بسيط جدا مثل

// file1.php
$var = "foobar";

// file2.php
include("file1.php"); // or require("file1.php");
die($var);

يعمل ؟ ربما انها مشكلة خارج التعليمات البرمجية الخاصة بك.

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

بدلا من if (!logged), حاول if (empty($logged)).التي لن تولد إشعار في الحالات التي يكون فيها متغير لم يتم تعيين.

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