ریدایرکت به یک صفحه مشترک بین کل پروژه
سلام دوستان
من یه فایل header.php و footer.php دارم که در تمام صفحات پروژه include شدن تا عدر و فوتر تمام صفحات یکسان باشند.
توی فایل هدر کد زیر رو قرار دادم
if (!isset($_SESSION["logedin"])){
header('Location: login.php');}
خب تا اینجا درست.
ولی یه خطای منطقی رخ میده چون خود صفحه login.php هم از همین فایل هدر استفاده میکنه.
یعنی درواقع اگر سیشن یافت نشد ریدایرکت میشه به login.php و تو این صفحه هم بازم میگه اگر سیشن یافت نشد ریدایرکتش کن. پس بینهایت ریدایرکت رخ میده و در نهایت خطا.
حالا من چطور باید به برنامه بفهمونم که اگر تو صفحه login بودی دیگه نمیخواد ریدایرکت کنی؟
نقل قول: ریدایرکت به یک صفحه مشترک بین کل پروژه
تنها کار مورد نیاز که باید انجام بدین استفاده از یک شرط به کمک __FILE__ هست
نقل قول: ریدایرکت به یک صفحه مشترک بین کل پروژه
نقل قول:
نوشته شده توسط
hobab-theme
سلام دوستان
من یه فایل header.php و footer.php دارم که در تمام صفحات پروژه include شدن تا عدر و فوتر تمام صفحات یکسان باشند.
توی فایل هدر کد زیر رو قرار دادم
if (!isset($_SESSION["logedin"])){
header('Location: login.php');}
خب تا اینجا درست.
ولی یه خطای منطقی رخ میده چون خود صفحه login.php هم از همین فایل هدر استفاده میکنه.
یعنی درواقع اگر سیشن یافت نشد ریدایرکت میشه به login.php و تو این صفحه هم بازم میگه اگر سیشن یافت نشد ریدایرکتش کن. پس بینهایت ریدایرکت رخ میده و در نهایت خطا.
حالا من چطور باید به برنامه بفهمونم که اگر تو صفحه login بودی دیگه نمیخواد ریدایرکت کنی؟
خب اینو نباید میزاشتی تو هدرت وقتی داری همه جا صداش می کنی چون اولین کدهایی که اجرا میشن هدر خواهند بود حالا که انجام دادی به نظرم یه راه از بین راه های ممکنه اینه که یه گذاره دیگه هم به شرط خودتون اضافه کنید که اگر در صفحه لاگین بودی ریدایرکت نکن
نقل قول: ریدایرکت به یک صفحه مشترک بین کل پروژه
نقل قول:
اگر در صفحه لاگین بودی ریدایرکت نکن
ببخشید میتونم بپرسم چطور بفهمیم در صفحۀ لاگین هستیم؟
نقل قول: ریدایرکت به یک صفحه مشترک بین کل پروژه
نقل قول:
نوشته شده توسط
hobab-theme
سلام دوستان
من یه فایل header.php و footer.php دارم که در تمام صفحات پروژه include شدن تا عدر و فوتر تمام صفحات یکسان باشند.
توی فایل هدر کد زیر رو قرار دادم
if (!isset($_SESSION["logedin"])){
header('Location: login.php');}
خب تا اینجا درست.
ولی یه خطای منطقی رخ میده چون خود صفحه login.php هم از همین فایل هدر استفاده میکنه.
یعنی درواقع اگر سیشن یافت نشد ریدایرکت میشه به login.php و تو این صفحه هم بازم میگه اگر سیشن یافت نشد ریدایرکتش کن. پس بینهایت ریدایرکت رخ میده و در نهایت خطا.
حالا من چطور باید به برنامه بفهمونم که اگر تو صفحه login بودی دیگه نمیخواد ریدایرکت کنی؟
یه جواب هم من میدم که ممکنه کار عجیبی باشه اما میتونین یک کپی از header بگیرین که این کد رو نداره و در لاگین، از این فایل include کنین.
نقل قول: ریدایرکت به یک صفحه مشترک بین کل پروژه
نقل قول:
نوشته شده توسط
sara_aryanfar
خب اینو نباید میزاشتی تو هدرت وقتی داری همه جا صداش می کنی چون اولین کدهایی که اجرا میشن هدر خواهند بود حالا که انجام دادی به نظرم یه راه از بین راه های ممکنه اینه که یه گذاره دیگه هم به شرط خودتون اضافه کنید که اگر در صفحه لاگین بودی ریدایرکت نکن
سلام.
خب چون پروژه جوری هست که لاگین شرط اول هر کاربری هست. مثل اپ های بانکی. پس باید اونجا قرارداده می شد.
ولی طبق نظر یکی از دوستان و طبق گفته شما اول چک میکنه اگر تو صفحه لاگین یا رجیستر بود دیگه ریدایرکت نکنه
نقل قول: ریدایرکت به یک صفحه مشترک بین کل پروژه
نقل قول:
نوشته شده توسط
ASHKANLAEI
ببخشید میتونم بپرسم چطور بفهمیم در صفحۀ لاگین هستیم؟
سلام
من این قطعه کد رو نوشتم
if (!isset($_SESSION["logedin"])){
$url = substr($_SERVER['PHP_SELF'], strlen($_SERVER['PHP_SELF']) - 12, 12);
if ($url !== "login-us.php" && $url !== "register.php"){
header('Location: '. SITE_URL .'login-us.php?t=login');
}
}
نقل قول:
نوشته شده توسط
ASHKANLAEI
یه جواب هم من میدم که ممکنه کار عجیبی باشه اما میتونین یک کپی از header بگیرین که این کد رو نداره و در لاگین، از این فایل include کنین.
نه اینجوری در صورتی که یه تغییر توی هدر بدیم باید بریم توی هدر دوم هم تغییر بدیم که کار جالبی نیست و از هوشمندی برنامه کاسته میشه