Если вы кодируете данные в Base64 для URL или пытаетесь сгенерировать JWT, символы + и / могут некорректно обрабатываться. Для этого придуман стандарт Base64URL, где они заменены на - и _, а паддинг = убран. В PHP готовых функций нет, но их легко написать на основе base64_encode и strtr. Главное — не забыть при декодировании вернуть = на место, иначе ничего не получится. Кодирование: rtrim(strtr(base64_encode($data), '+/', '-_'), '='); Декодирование: base64_decode(strtr($data, '-_', '+/') . str_repeat('=', (4 - strlen($data) % 4) % 4)); Где это нужно? - JWT (JSON Web Tokens): Все части токена кодируются именно так. - URL-параметры: Безопасная передача бинарных ID или сложных строк. - API и OAuth 2.0: Обмен кодами и ключами. https://varnote.ru/php/base64url-encode-and-decode/ varnote | #varnote #php #base64 #jwt
Если вы кодируете данные в Base64 для URL или пытаетесь сгенерировать JWT, символы + и / могут некорректно обрабатываться
19 августа19 авг
~1 мин