نحوه تغییر مسیر در PHP

نحوه تغییر مسیر در PHP
آفلاین
user-avatar
عرفان حشمتی
30 مرداد 1399, خواندن در 5 دقیقه

redirect به شما این امکان را می‌دهد مرورگر کلاینت را به URL دیگری هدایت کنید. می‌توانید هنگام تغییر دامنه‌ها، تغییر نحوه ساخت سایت یا تغییر در HTTPS از آن استفاده کنید.

در این مقاله به شما نشان می‌دهیم که چگونه با پی اچ پی به صفحه دیگری هدایت شوید. دقیقا توضیح خواهیم داد که پی اچ پی چگونه کار می‌کند و به شما نشان می‌دهد که در پشت صحنه چه اتفاقی می‌افتد.

PHP را با یک دوره آنلاین رایگان بیاموزید

اگر می‌خواهید پی اچ پی یاد بگیرید، دوره آنلاین رایگان ما را ببینید.

نحوه کار redirect

قبل از اینکه به ویژگی‌های تغییر مسیر پی اچ پی بپردازیم، بیایید بفهمیم که دقیقا چگونه هدایت HTTP کار می‌کند. به نمودار زیر نگاهی بیندازید.

اما در تصویر بالا چه اتفاقی می‌افتد؟ در زیر شرح خواهیم داد:

  • مرورگر کلاینت صفحه خاصی را از سرور درخواست می‌کند. در مثال بالا، کاربر درخواست مطالب فایل index.php را داده است.
  • سرور درخواست فایل index.php را دریافت می‌کند و می‌خواهد به مشتری اطلاع دهد که دیگر در دسترس نیست یا در جایی دیگر جابجا شده است و باید به جای آن به دنبال یک فایل جدید باشد: new_index.php. سرور هدر موقعیت‌یابی را با URL جدید به همراه کد 301 یا 302 HTTP ارسال می‌کند. این‌ها کدهای HTTP برای تغییر مسیر هستند.
  • هنگامی که یک مرورگر کلاینت با کد 301 یا 302 روبرو می‌شود، می‌داند که مجبور است درخواست دیگری را به URL جدید وارد کرده تا محتوا را بارگیری کند. این یک درخواست برای واکشی فایل new_index.php را در مثال بالا آغاز می‌کند.
  • سرانجام سرور محتوای URL جدید را ارسال می‌کند.

به این ترتیب، تغییر مسیر اصلی HTTP کار می‌کند. در بخش بعدی، ما در مورد چگونگی عملکرد تغییر مسیر PHP بحث خواهیم کرد.

تغییر مسیر در PHP چگونه کار می‌کند؟

در پی اچ پی، هنگامی که می‌خواهید کاربر را از یک صفحه به صفحه دیگر منتقل کنید، باید از تابع header() استفاده کنید. تابع هدر به شما این امکان را می‌دهد که یک هدر HTTP خام ارسال کنید، که تغییر مسیر واقعی را همانطور که در بخش قبلی گفتیم انجام می‌دهد.

نحوه استفاده از تابع هدر

بیایید سینتکس تابع هدر را ببینینم:

header( $header, $replace, $http_response_code )
  • header$: این رشته هدر HTTP است که می‌خواهید از آن استفاده کنید. ما از هدایت موقعیت مکانی برای تغییر مسیر استفاده خواهیم کرد.
  • replace$: این یک پارامتر اختیاری است که نشان می‌دهد که آیا هدر باید یک هدر مشابه قبلی را جایگزین کند.
  • http_response_code$: به شما این امکان را می‌دهد که یک کد پاسخ خاص ارسال کنید.

حال، اجازه دهید نگاهی به مثال زیر بیندازیم تا درک کنیم که چگونه همه چیز با هم کار می‌کنند.

<?php
// index.php
header("Location: https://www.yoursite.com/new_index.php");
exit();
?>

با اجرای اسکریپت بالا، مرورگر کلاینت به http://www.yoursite.com/new_index.php هدایت می‌شود. در پس زمینه، یک هدر آدرس HTTP خام به همراه کد وضعیت 302 ارسال می‌کند. کد وضعیت 302 برای تغییر مسیر موقت استفاده می‌شود، اما اگر می‌خواهید تغییر مسیر دائمی دهید، می‌توانید همانطور که در قطعه کد زیر نشان داده شده است، کد 301 را در آرگومان سوم بگذرانید.

<?php
// index.php
header("Location: http://www.yoursite.com/new_index.php", TRUE, 301);
exit();
?>

تغییر مسیر دائمی 301 به شما این امکان را می‌دهد تا ربات‌های جستجو را مطلع سازید که دیگر صفحه موجود نیست و می‌توان آن را با یک صفحه جدید جایگزین کرد.

چرا باید از توابع die() یا exit() پس از تغییر مسیر هدر استفاده کنید؟

کاربرانی که چشمان تیز دارند متوجه می‌شوند که ما در مثال بالا از تابع exit() استفاده کرده‌ایم. در حقیقت، این مورد اجباری است که بلافاصله پس از تغییر مسیر هدر از تابع exit() یا die() استفاده کنید تا اجرای اسکریپت متوقف شود و از نتایج ناخواسته خودداری کنید.

بنابراین همیشه توصیه می‌شود بعد از تغییر مسیر یکی از این توابع را استفاده کنید.

خطای معروف: هدرها قبلا ارسال شده‌اند

اگر یک برنامه‌نویس پی اچ پی با تجربه هستید، ما مطمئنیم که در برخی از مراحل توسعه پی اچ پی خود متوجه این خطای معروف پی اچ پی شده‌اید. با این حال برای مبتدیان، مواجهه با این خطا واقعا آزاردهنده است، زیرا دیباگ کردن و رفع مشکل بسیار سخت است. در بیشتر موارد، آن‌ها حتی سرنخ دیگری ندارند که علت آن از تغییر مسیر هدر است.

قانون کوچک این است که وقتی از تابع header() در اسکریپت خود استفاده می‌کنید، باید اطمینان حاصل کنید که هیچ خروجی را قبل از آن ارسال نمی‌کنید. در غیر این صورت، پی اچ پی با خطای "هدر ارسال شده است" این موضوع را اعلام می‌کند که این می‌تواند اتفاق بیفتد حتی اگر قبل از استفاده از تابع header() یک فضای سفید ارسال کرده باشید.

نتیجه‌گیری

در این مقاله، ما در مورد یکی از ویژگی‌های مهم برنامه نویسی پی اچ پی بحث کردیم: تغییر مسیر. اولا ما از اصول اولیه تغییر مسیر HTTP عبور کردیم و سپس نحوه عملکرد آن در پی اچ پی را نشان دادیم.

بهترین اسکریپت‌های PHP در CodeCanyon

هزاران مورد از بهترین و مفیدترین اسکریپت‌های پی اچ پی که تاکنون در CodeCanyon ایجاد شده است را بررسی کنید. با پرداخت هزینه‌ای اندک، می‌توانید یکی از این مضامین با کیفیت بالای وردپرس را خریداری کرده و تجربه وبسایت خود را برای بازدید کنندگان خود بهبود بخشید.

در اینجا چند مورد از پرفروش‌ترین و به روزترین اسکریپت‌های پی اچ پی موجود در CodeCanyon برای سال 2020 ارائه شده است.

منبع

چه امتیازی به این مقاله می دید؟
خیلی بد
بد
متوسط
خوب
عالی

دیدگاه‌ها و پرسش‌ها

برای ارسال دیدگاه لازم است، ابتدا وارد سایت شوید.

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

آفلاین
user-avatar
عرفان حشمتی @heshmati74
مهندس معماری سیستم های کامپیوتری، طراح و توسعه دهنده وب سایت
دنبال کردن

گفتگو‌ برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن وارد شو