استفاده از base64encode در url
یکی از الگوریتمهای کدگذاری قابل برگشت در زبان برنامه نویسی PHP الگوریتم base64 است؛ این روش کدگذاری یک رشته گرفته و آنرا به روش خودش کدگذاری میکند. اما کاراکترهای غیرمجازی را در کدگذاری خود استفاده میکند که در url قابل استفاده نیست. برای اینکه بتوانید از رشتهی خروجی تابع base64 در urlهای خود استفاده کنید این نوشته را مطالعه کنید و از این آموزش بهره ببرید.
استفاده از base64encode در url
روش کدگذاری Base64 چیست؟
روش کدگذاری Base64 به عنوان یک روش گدگذاری دودویی تبدیل متن قابل خواندن توسط انسان به متن کدگذاری شده است. در روش کدگذاری Base64 آرایهای از بایتها به صورت رشته کاراکترهای اَسکی کدگذاری خواهند شد. کاربرد روش کدگذاری Base64 در تبادل اطلاعات از طریق محیطهایی است که می توانند فقط کدهای اسکی ۷بیت پشتیبانی کنند است. توصیف روش کدگذاری Base64 در RFC 1252 آمده است.

استفاده از base64encode در url
باید بدانید که کاراکترهای +/= در بخش url امکان استفاده نیستند ما با استفاده از یک روش ابداعی آنها را کاراکترهای ._- جایگزین میکنیم. برای استفاده از base64 در url میتوانید از توابع زیر استفاده کنید:
private function base64_url_encode($string) {
return strtr(base64_encode($string), '+/=', '._-');
}
private function base64_url_decode($string) {
return base64_decode(strtr($string, '._-', '+/='));
}
برای استفاده از خروجی base64 کافیست ابتدا رشتهی کدشدهی خود با الگوریتم base64 را به تابع base64_url_encode بدهید. بعد از استفاده از آن در url خود به موقع پردازش رشتهی مورد نظر را دریافت کنید و در تابع base64_url_decode بگذارید. با کمک این روش کمکی میتوانید از urlهای کد شده ی base64 میتوانید استفاده کنید. اگر روش بهتری برای استفاده از base64 در urlهای پروژههای تحت PHP میشناسید برای ما ارسال کنید تا با نام خودتان به اشتراک بگذاریم.



















امکان استفاده از این روش برای انتقال داده در Query String امن هست؟
خیر کاملا امن نیست زیرا base64 قابل دیکد شدن است پس از دیتای مهم در کوئری استرینگها استفاده نکنید.
برای دیکد کردن در زبانهای دیگه مثل جاوااسکریپت هم همین الگوریتم جواب میده؟
توابع encode و decode در base64 در اکثر زبانهای برنامه نویسی وجود دارد.
این روش از نظر امنیتی مزیتی هم داره یا فقط برای سازگاری با URL هست؟
بیشتر برای سازگاری آدرسها است.
آیا این جایگزینی کاراکترها روی طول رشته هم تأثیری میذاره؟
تاثیری ندارد زیرا پروسهی base64 یک نوع کدگذاری برگشت پذیر است.
این روش روی همه نسخههای PHP بدون تغییر کار میکنه؟
بله کار میکند.