تابع urlencode در php و اینکد URL

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

تابع urlencode در php و اینکد URL

اینکد url با تابع urlencode در php بسیار آسان و ساده است .در php توابع درونی ای برای encode و decode آدرس url وجود دارد .  اینکد url قبل از ارسال داده های url به query string یا یک تابع برای انجام عملیات روی داده های این url انجام می شود . و بعد ، این داده ها بعد از دریافت توسط یک صفحه یا تابع ،  باید به فرم اصلی خود دیکد (decode) شوند .

Query string چیست ؟

فرض کنید یک url به این شکل دارید

پس کوئری استرینک (query string) همان تکه ای از درخواست که با متد GET ارسال می شود است ، که در مثال بالا کوئری (query) شامل دو قسمت است : یک کلید (key) به اسم id که دارای مقدار ۵ است و یک کلید name که مقدار php را دارد .

خب حالا در php میتوانید اطلاعات فرم ها بخوانید و دسترسی به این مقادیر داشته باشید .

برای آشنایی با متغیر $_GET و $_POST و همچنین دریافت اطلاعات فرم در php کلیک کنید

با استفاده از کد زیر ما مقدار id را می گیریم و در متغییر $id ذخیره می کنیم . حالا اگر مقدار $id را چاپ کنیم عدد ۵ نمایش خواهد داد.

همچنین با آرایه $_SERVER در php می توانید تمام مقادیر را به صورت یکجا بگیرید و با تابع print_r آنرا چاپ کنید که مطمینان به صورت آرایه ای خواهد بود !

تابع urlencode در php و اینکد URL

انواع URL encoding & decoding در PHP

در php دو روش برای اینکد و دیکد url وجود دارد

  • Application/x-www-form-urlencode
  • RFC 3956 standard type

نوع Application/x-www-form-urlencode

این نوع از اینکد url با تابع urlencode  و urldecode() در php قابل انجام است . از این نوع url encoding در php پیشنهاد می شود زمانی استفاده کنید که قصد ارسال یک URL به query string توسط یک فرم را دارید .!

این توابع کاراکتر های خاص بجز (_) ، (-) و (.) را که در آدرس url آمده است را به صورت %[HEX] جایگزین می کند همچنین کاراکتر space (فاصله) را با + جایگزین می کند.

برای آشنایی با کاراکترهای خاص و رزرو شده html و اینکد آنها با تابع htmlentities و htmlspecialchars در php کلیک کنید

اگر آدرس url را به صورت اینکد شده که با تابع urlencode در php  قابل انحام است ، ارسال کنیم .، هرگونه کاراکتر خاصی که در url باشد ممکن است باعث خراب شدن یا بریده شدن بقیه قسمت های url شود و نتوانیم در صفحه دریافتی مقادیر سمت راست url را به درستی آنصورت که انتظار داشتیم ، دریافت کنیم .

مثال زیر به شما نتیجه اعمال تابع urlencode در php  بر روی آدرس url را نمایش می دهد .

نوع استاندارد RFC 3986

یکی دیگر از توابع اینکد url در php ، rawurlencode() و rawurldecode() هستند . برخلاف نوع قبلی ، که فاصله با + جایگزین می شد ، در اینجا فاصله در url با %[HEX] جایگزین می شود .

این متد بر اساس استاندارد RFC است و استفاده از این نوع زمانی پیشنهاد می شود که قصد ساخت URL های داینامیک بنابر شرایط درخواست های سرور دارید .

کد php زیر یک مثال از استفاده دو تابع ، rawurlencode() و rawurldecode() برای url encoding در php است.

جمع بندی

دیدید با توابع از پیش تعریف شده (built-in) در php به چه راحتی تونستیم یک url را به دو روش مختلف RFC و Application/x-www-form-urlencode اینکد کنیم . همجنین مثال هایی از تابع urlencode در php و اینکد URL با space توسط توابع rawurlencode() و rawurldecode() را دیدیم . این توابع در ارسال فرم ها به سرویس های دیگر مثل ارسال sms با php ، کار با api هایی مثل وب سرویس RESTfull یا درگاه های پرداخت بخصوص اتصال به درگاه پرداخت بانک ملت استفاده می شود . امیدوارم نهایت استفاده را برده باشید . هرگونه مشکلی در پیاده سازی کد ها داشتید از قسمت نظرات ارسال کنید . سریعا پاسخگوی سوالات شما هستیم .

موفق باشید .

 

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

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

  1. محمود رنجبر ۶ مرداد ۱۴۰۱

    سلام دوباره استاد گرامی مهندس شفیعی
    واقعا راهنمایی تون عالی و بجا بود
    مهندسی برازنده شماست
    موفق باشید

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

      سلام ممنون از شما.
      موفق و پیروز باشید

      پاسخ
  2. محمود رنجبر ۶ مرداد ۱۴۰۱

    سلام مهندس شفیعی گل وقت بخیر
    تو سایت دیوار بعد از ثبت آگهی رو گزینه مدیریت آگهی که hover میکنیم انتهای url یک رشته کد شده هست که احتمالا id آگهی مورد نظر هست من بخوام مثل سایت دیوار وقتی رو گزینه مدیریت کلیک کردم id رو به این صورت ارسال کنم چیکار کنم ؟
    چون اگه به روش معمولی بعرستم تو url مشخص هست کاربر میتونه با تغییر id آگهی سایر کاربران رو هم ویرایش کنه
    با متد post هم وقتی inspect میگیرم و مقدار تگی که id درون اون قرار داره رو تغییر میدم پست کاربر دیگه رو میشه ویرایش کرد
    چیکار باید کرد ؟

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

      سلام. ممنون.
      در صفحه ای که فرم ویرایش آگهی باز میشه شما باید همون اول کدها یه شرط بزارید و برید تو دیتابیس بگردید (دستور sql بزنید) ببینید کاربری که الان لاگین هست این آگهی برای اون داخل جدول آگهی ها ثبت شده یا نه و اگه ثبت نبود اونو با دستور header ریدایرکت کنید به صفحه اصلی.

      پاسخ
  3. gh saf ۳۱ فروردین ۱۳۹۹

    با سلام
    می خواهم با استفاده از PHP یک کل اطلاعات و تصایر و سایر المانهایی که در یک صفحه وجود دارد را یکباره دانلود کنم و بعد به صورت off line از آن استفاده کنم. چگونه می شود این کار را انجام داد؟ تقریبا تمام توابعی که می شناختم را باترکیب با لگوریتمهای مختلف تست کردم جواب درست نگرفتم. امکان دارد کمک کنید؟

    پاسخ
    1. حسن شفیعی ۳۱ فروردین ۱۳۹۹

      سلام. از این اسکریپت میتونید استفاده کنید :
      https://github.com/sidharthasingh/Website-Copier
      یا
      https://github.com/pagecarton/website-downloader

      موفق باشید.

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