انتقال یا ریدایرکت (Redirect) کاربر به صفحه دیگر در زبانهای برنامه نویسی سمت بک اند از جمله PHP خیلی مورد نیاز هست و همه شما معمولا در طراحیهای خود میخواهید کاربر را از صفحاتی به صفحه دیگه ای منتقل و یا به اصطلاح ریدایرکت (Redirect) کنید، مثل صفحه لاگین و صفحه مدیریت و ...، کد هایی که استفاده میکنید شاید بعضی مواقع خطا یا هشداری ایجاد کند یا اصلا کار نکند.
یک تابع php همه فن حریف برای ریدایرکت و انتقال کاربر در php
قبل از هر چیزی تابع کاملی که نوشتیم را میتوانید در زیر مشاهده و استفاده نمایید. در ادامه به توضیح کامل این کد جالب میپردازیم:<?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 در صورت ارسال نشدن هدرها از قبل
در ابتدا ما بررسی میکنیم تا هدرهای صفحه ارسال نشده باشد ،اگر ارسال نشده، میتوانیم با کدهای 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 پرداختیم، اگر در این مورد سوال یا نظری داشتید، خوشحال میشویم که در بخش نظرات آن را با ما و کاربران سون لرن به اشتراک بگذارید.