【问题标题】:PHP base64_encode adding strange character at the end of stringPHP base64_encode 在字符串末尾添加奇怪的字符
【发布时间】:2018-03-16 20:37:03
【问题描述】:

我正在使用一个数组,我将其编码为 json,而不是 BASE64,将其保存在 Cookie 中,以便稍后检索。 实际字符串是:

{"insert":0,"delete":0}

在 PHP 中我有:

$Sync = json_encode($update);
setcookie('Sync',strtr(base64_encode($Sync), '+/', '-_'), 0, "/");

Cookie 被存储为:

eyJpbnNlcnQiOjEsImRlbGV0ZSI6MH0%3D

最后的“%3D”应该是“=”,这样才能填充base64的其余部分,因此返回奇怪的字符,但我不能正确。有任何想法吗? 提前致谢

【问题讨论】:

标签: php cookies base64


【解决方案1】:

在 php.net (http://php.net/manual/en/function.base64-encode.php#103849) 上的文档中,顶部评论提供了两个可以帮助您的功能(也类似于您的实现 :))

对于任何对“base64url”变体编码感兴趣的人,您可以使用这对函数:

<?php 
function base64url_encode($data) { 
  return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); 
} 

function base64url_decode($data) { 
  return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT)); 
} 
?>

在您的实现中,您似乎需要包装 strtr(base64_encode($Sync), '+/', '-_'), 0, "/")rtrim,像这样:

rtrim(strtr(base64_encode($Sync), '+/', '-_'), 0, "/"), '=')

结果:https://3v4l.org/5D1Mk

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 2010-10-23
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    相关资源
    最近更新 更多