انتقال یا ریدایرکت (Redirect) کاربر به صفحه دیگر در زبانهای برنامه نویسی سمت بک اند از جمله PHP خیلی مورد نیاز هست و همه شما معمولا در طراحیهای خود میخواهید کاربر را از صفحاتی به صفحه دیگه ای منتقل و یا به اصطلاح ریدایرکت (Redirect) کنید، مثل صفحه لاگین و صفحه مدیریت و …، کد هایی که استفاده میکنید شاید بعضی مواقع خطا یا هشداری ایجاد کند یا اصلا کار نکند.
قبل از هر چیزی تابع کاملی که نوشتیم را میتوانید در زیر مشاهده و استفاده نمایید. در ادامه به توضیح کامل این کد جالب میپردازیم:
<?php
function redirect($url)
{
if (!headers_sent()){
header("Location: $url");
}else{
echo "<script type='text/javascript'>window.location.href='$url'</script>";
echo "<noscript><meta http-equiv='refresh' content='0;url=$url'/></noscript>";
}
exit;
}
?>
تابع فوق شرایط مختلف ر در نظر گرفته و در هر شرایطی کار میکند. شما میتوانید با خیالی آسوده از آن استفاده کنید. توضیحات تابع را بخوانید:
در ابتدا ما بررسی میکنیم تا هدرهای صفحه ارسال نشده باشد ،اگر ارسال نشده، میتوانیم با کدهای php کاربر جاری را به صفحه جدید انتقال بدهیم و ریدایرکت کنیم. این مورد را در بلاک if در کد زیر میتوانید ببینید:
header("Location: $url");
در صورتی که هدر قبلا ارسال شده باشد و ما از دستور header استفاده کنیم یک هشدار ناخوشایند دریافت میکنیم. همان هشدار معروف header already sent ، که تقریبا هر برنامه نویس php با آن آشنا است، و حداقل یک بار با آن بر خورد کرده است. در این حالت ما از جاوا اسکریپت استفاده میکنیم تا بدون اینکه با خطایی مواجه شویم کاربر را ریدایرکت کنیم. در خط اول بلاک else این مورد را میتوانید ببینید. پس اگه هدرها ارسال شده باشد ما دیگر از php استفاده نمیکنیم و جاوا اسکریپت را جایگزین میکنیم و با کد indow.location.href کاربر را انتقال میدهیم. مطابق کد زیر:
echo "<script type='text/javascript'>window.location.href='$url'</script>";
حتما نگران هستید که ممکن است کاربر در مرورگرش جاوا اسکریپت رو هم غیر فعال کرده باشد؟ اگر جاوا اسکریپت غیر فعال باشد چه اتفاقی میافتد؟ این مشکل را هم میتوانید با یک تگ noscript حل کنید و کاربر را با HTML و تگ متا به صفحه جدید انتقال دهید. مطابق کد زیر:
echo "<noscript><meta http-equiv='refresh' content='0;url=$url'/></noscript>";
انتهای تابع هم ما از یک دستور exit استفاده کردیم تا اجرای اسکریپت متوقف شود. اگر این کد را نگذارید همزمان با اینکه کاربر ریدایرکت میشود ادامه اسکریپت php همچنان اجرا میشود در صورتی که دیگر به آن نیاز نداریم و کاربر از آن صفحه به جای دیگری منتقل شده است.
تابع PHP که در ابتدای مقاله برای شما نوشتیم، را داخل کدهای php خود تعریف کنید، و بعد از آن به راحتی میتوانید، در هر صفحه ای که میخواهید، به آدرس دیگری منتقل شود، استفاده کنید. به طور مثال اگر میخواهید صفحه شما به 7Learn.com منتقل شود، تنها کافی است در آن صفحه به این شکل از این تابع استفاده کنید:
redirect("https://7learn.com");
در این مقاله به توضیح نحوهی ریدایرکت در php پرداختیم، اگر در این مورد سوال یا نظری داشتید، خوشحال میشویم که در بخش نظرات آن را با ما و کاربران سون لرن به اشتراک بگذارید.
کافیه که بعد از ورود، در صفحه جدید که ریدایرکت میکنید اطلاعات کاربر رو از دیتابیس بگیرید و در یک تگ p به کاربر نشون بدید.