PDA

View Full Version : ریدایرکت به یک صفحه مشترک بین کل پروژه



hobab-theme
چهارشنبه 01 آبان 1398, 23:59 عصر
سلام دوستان
من یه فایل header.php و footer.php دارم که در تمام صفحات پروژه include شدن تا عدر و فوتر تمام صفحات یکسان باشند.
توی فایل هدر کد زیر رو قرار دادم

if (!isset($_SESSION["logedin"])){
header('Location: login.php');}
خب تا اینجا درست.
ولی یه خطای منطقی رخ میده چون خود صفحه login.php هم از همین فایل هدر استفاده میکنه.
یعنی درواقع اگر سیشن یافت نشد ریدایرکت میشه به login.php و تو این صفحه هم بازم میگه اگر سیشن یافت نشد ریدایرکتش کن. پس بینهایت ریدایرکت رخ میده و در نهایت خطا.
حالا من چطور باید به برنامه بفهمونم که اگر تو صفحه login بودی دیگه نمیخواد ریدایرکت کنی؟

ASHKANLAEI
پنج شنبه 02 آبان 1398, 07:22 صبح
تنها کار مورد نیاز که باید انجام بدین استفاده از یک شرط به کمک __FILE__ هست

sara_aryanfar
دوشنبه 06 آبان 1398, 23:39 عصر
سلام دوستان
من یه فایل header.php و footer.php دارم که در تمام صفحات پروژه include شدن تا عدر و فوتر تمام صفحات یکسان باشند.
توی فایل هدر کد زیر رو قرار دادم

if (!isset($_SESSION["logedin"])){
header('Location: login.php');}
خب تا اینجا درست.
ولی یه خطای منطقی رخ میده چون خود صفحه login.php هم از همین فایل هدر استفاده میکنه.
یعنی درواقع اگر سیشن یافت نشد ریدایرکت میشه به login.php و تو این صفحه هم بازم میگه اگر سیشن یافت نشد ریدایرکتش کن. پس بینهایت ریدایرکت رخ میده و در نهایت خطا.
حالا من چطور باید به برنامه بفهمونم که اگر تو صفحه login بودی دیگه نمیخواد ریدایرکت کنی؟
خب اینو نباید میزاشتی تو هدرت وقتی داری همه جا صداش می کنی چون اولین کدهایی که اجرا میشن هدر خواهند بود حالا که انجام دادی به نظرم یه راه از بین راه های ممکنه اینه که یه گذاره دیگه هم به شرط خودتون اضافه کنید که اگر در صفحه لاگین بودی ریدایرکت نکن

ASHKANLAEI
سه شنبه 07 آبان 1398, 07:51 صبح
اگر در صفحه لاگین بودی ریدایرکت نکن

ببخشید میتونم بپرسم چطور بفهمیم در صفحۀ لاگین هستیم؟

ASHKANLAEI
سه شنبه 07 آبان 1398, 07:53 صبح
سلام دوستان
من یه فایل header.php و footer.php دارم که در تمام صفحات پروژه include شدن تا عدر و فوتر تمام صفحات یکسان باشند.
توی فایل هدر کد زیر رو قرار دادم

if (!isset($_SESSION["logedin"])){
header('Location: login.php');}
خب تا اینجا درست.
ولی یه خطای منطقی رخ میده چون خود صفحه login.php هم از همین فایل هدر استفاده میکنه.
یعنی درواقع اگر سیشن یافت نشد ریدایرکت میشه به login.php و تو این صفحه هم بازم میگه اگر سیشن یافت نشد ریدایرکتش کن. پس بینهایت ریدایرکت رخ میده و در نهایت خطا.
حالا من چطور باید به برنامه بفهمونم که اگر تو صفحه login بودی دیگه نمیخواد ریدایرکت کنی؟
یه جواب هم من میدم که ممکنه کار عجیبی باشه اما میتونین یک کپی از header بگیرین که این کد رو نداره و در لاگین، از این فایل include کنین.

hobab-theme
جمعه 10 آبان 1398, 22:21 عصر
خب اینو نباید میزاشتی تو هدرت وقتی داری همه جا صداش می کنی چون اولین کدهایی که اجرا میشن هدر خواهند بود حالا که انجام دادی به نظرم یه راه از بین راه های ممکنه اینه که یه گذاره دیگه هم به شرط خودتون اضافه کنید که اگر در صفحه لاگین بودی ریدایرکت نکن
سلام.
خب چون پروژه جوری هست که لاگین شرط اول هر کاربری هست. مثل اپ های بانکی. پس باید اونجا قرارداده می شد.
ولی طبق نظر یکی از دوستان و طبق گفته شما اول چک میکنه اگر تو صفحه لاگین یا رجیستر بود دیگه ریدایرکت نکنه

hobab-theme
جمعه 10 آبان 1398, 22:24 عصر
ببخشید میتونم بپرسم چطور بفهمیم در صفحۀ لاگین هستیم؟
سلام
من این قطعه کد رو نوشتم


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');
}
}


یه جواب هم من میدم که ممکنه کار عجیبی باشه اما میتونین یک کپی از header بگیرین که این کد رو نداره و در لاگین، از این فایل include کنین.
نه اینجوری در صورتی که یه تغییر توی هدر بدیم باید بریم توی هدر دوم هم تغییر بدیم که کار جالبی نیست و از هوشمندی برنامه کاسته میشه