我使用的是一个数组,我将其编码为json,而不是BASE64,将其保存在Cookie中,以便稍后检索。 实际的字符串是:
{"insert":0,"delete":0}
在PHP中我有:
$Sync = json_encode($update);
setcookie('Sync',strtr(base64_encode($Sync), '+/', '-_'), 0, "/");
Cookie存储为:
eyJpbnNlcnQiOjEsImRlbGV0ZSI6MH0%3D
最后的“%3D”应该是“=”所以要填充base64的其余部分,因此返回奇怪的字符,但我无法正确。有任何想法吗? 提前致谢
答案 0 :(得分:0)
在php.net(http://php.net/manual/en/function.base64-encode.php#103849)上的文档中,顶部注释提供了两个应该对您有帮助的函数(类似于您的实现:))
任何对“base64url”#39;变体编码,你可以使用这对函数:
<?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, "/"), '=')