ریدایرکت با php

  • آپدیت شده در تاریخ

ریدایرکت با php

ریدایرکت با php مکانیزمی برای هدایت کاربر از یک صفحه به صفحه دیگر بدون کلیک کردن بر روی یک لینک است . این قابلیت ریدایرکت با php  در مواردی که نیاز به هدایت کاربر در پشت صحنه باشد ، بسیار مفید خواهد بود . برای مثال ، زمانی که کاربر در حال انتقال به صفحه پرداخت می باشد ، ریدایرکت باید به صورت خودکار توسط اسکریپت php انجام شود .

Php تابع پیشفرضی برای هدایت کاربر از طریق url، به اسم header() معرفی کرده است . با استفاده از تابع header در php ، ما نیاز داریم که location را برای هدایت کاربر در قالب url یا به صورت relative (نسبی) تعیین کنیم.

برخلاف ریدایرکت با جاواسکریپت که راه های مختلفی برای مدیریت url بر اساس مرورگر خاص ارایه داده است ، php از این پیچیدگی اجتناب کرده و فقط یک تابع header برای اعمال تاثیر یکسان بر روی تمامی مرورگرها ارایه داده است . پس حتما متوجه شدید که ریدایرکت با php بسیار آسان تر و منطقی تر از استفاده در جاواسکریپت می باشد .!

ریدایرکت با php

سینتکس ریدایرکت با php

در کد سینتکس ریدایرکت با php بالا ، ما باید یک url صحیح برای صفحه ای که قصد هدایت کاربر به آنجا را داریم تعیین کنیم . می توانیم url ها را به صورت کامل (absolute) یا نسبی (relative) مشخص کنیم . اگر آدرس url به صورت نسبی تعیین کنیم ، در اینصورت در به دنبال آدرس در جایی که هستیم می گردد .

نکته : قبل از مشخص کردن آدرس url در loction header ، باید از وجود صفحه مورد نظر اطمینان پیدا کنیم.

احتیاط قبل از redirect

قبل از اجرای عملیات ریدایرکت با php ، باید در این مورد اطمینان داشته باشیم که ، هیچ خروجی در مرورگر قبل از خطی که قصد صدا زدن تابع header وجود نداشته باشد. برای مثال ،

این اسکریپت یک خطای warning notice را به مرورگر ارسال می کند.

این “احتیاط” فقط در مورد تابع header در php نیست ، بلکه برای همه توابعی مثل set_cookie() ، session_start() و … صدق می کند . در واقع هر تابع مثل بالا که یک سری اطلاعات و تغییرات در هدر ارسالی از طرف ما به سرور اضافه می کند ، از قبل باید هیچ خروجی حتی یک کاراکتر کوچک . نداشته باشد ، چون باعث خطاهایی مثل

که یکی از خطاهای معروف php است در صفحه ظاهر می شود . این خطا جز warning هایی است که باعث break شدن کد های شما نمی شود . برای آشنایی با انواع حطاها در php این مقاله را حتما و حتما مطالعه کنید . به شما در شناسایی ، رفع باگ ها و خطاها بسیار کمک خواهد کرد .

مواردی که باعث خطای header می شوند

  • محتویات html مثل متن یا تگ ها
  • جاهای خالی غیرضروری قبل از تگ php
  • خطاها یا warning های قبل از اجرا شدن redirect
  • دستورات چاپ متنی مثل echo() ، print()

راه های مدیریت خطای output قبل از ریدایرکت با php

برای امنیت بیشتر بعد از اجرای دستور header ، exit را قرار بدیم

می توانید خاصیت output buffering را از طریق فایل پیکربندی php (php.ini) یا از طریق تابع ob_start() در اول کد هاتون قرار بدید.

استفاده از ریدایرکت و هدایت کاربر به یک صفحه دیگر از موارد خیلی مهم و جدانشدنی در php و پروژه های تحت وب است .

موفق باشید

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۷)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. محمود رنجبر ۱۸ بهمن ۱۴۰۰

    سلام حسن جان یه سوال دارم خیلی برام مهمه میخوام برگردم به چند صفحه قبل و رفرش هم صورت بگیره
    با دستوره history.go می رم به صفحه مورد نظر اما چطوری اونو رفرش هم بکنم
    تو یه سایت ایرانی نوشته بود از
    window.location.reload(history.go) استفاده کنم ولی جواب نداد و رفرش نشد حالا شما راهنمایی کنید چیکار کنم ؟
    سپاس از راهنمایی تون

    پاسخ
    1. حسن شفیعی ۱۹ بهمن ۱۴۰۰

      سلام.
      همزمان نمیشه با history back با رفرش استفاده کرد. از این استفاده کنید
      window.location.replace(document.referrer);

      پاسخ
  2. مهران نظری ۲۷ دی ۱۴۰۰

    سلام استاد.
    میشه یک دوره ساخت وبلاگ با php بزارین

    پاسخ
  3. محمود ۱۰ خرداد ۱۴۰۰

    سلام مهندس شفیعی نازنین خسته نباشید من برای صفحه ویرایش آگهی توسط کاربر میخوام وقتی که اطلاعات رو تغییر داد پیغام تغییر موفقیت آمیز رو با جاوا اسکریپت نشون بدم با دستور echo ولی وقتی که پیغام نشون داده میشه اوکی رو که میزنم میره به صفحه سفید و باید دکمه برگشت رو بزنم تا دوباره به صفحه ویرایش بیاد از دستور header هم که بعدش استفاده میکنم پیغام اجرا نمیشه میخوام بعد از اوکی کردن پیغام جاوا اسکریپت دوباره تو صفحه ویرایش باشم و تغییرات اعمال شده باشه راهنمایی لطفا

    پاسخ
    1. حسن شفیعی ۱۰ خرداد ۱۴۰۰

      سلام ممنون.
      از سمت ajax در php فقط true یا false بودن رو برگشت بدید و بر اون اساس پیام رو با جاواسکریپت بسازید نه با echo

      پاسخ
  4. Arman Askari ۷ آذر ۱۳۹۶

    میتونم از ریدایرکت تو بات نویسی استفاده کنم؟ به عنوان مثال اگر پیام دریافتی شامل عکس بود ریدایرکت کنم به یه فایل php دیگه و عملیات مورد نظرم رو رو عکس انجام بدم
    header(‘location : image.php?img=simple’); exit

    پاسخ
    1. حسن شفیعی ۷ آذر ۱۳۹۶

      سلام . نه متاسفانه امکان همچنین موردی نیست .
      راه خیلی بهتری به جای ریدایرکت وجود داره . کافیه مسیر فایل رو همراه با پارامتری دلخواهی به url مورد نظر اضافه کنید و بعد اون url رو با تابعfile_get_contents اجرا کنید تا خروجی شما انجام بشه.

      مثلا

      کاری که در ربات افکت عکسی که چندماه پیش طراحی کردیم انجام شده و به خوبی هم کار میکنه

      موفق باشید

      پاسخ
دوره های آموزشی