我使用base64_encode将数字id发送到url,base64_encode($list_post['id']);
最多99个工作正常,但99之后产生错误的编码字符串。
编码字符串中的最后一个字符是=(等号),但是当数字超过99时,例如100,它不会在结尾处显示=(等号)。
答案 0 :(得分:2)
看看base64中的填充是如何工作的:http://en.wikipedia.org/wiki/Base64#Padding
并不总是需要填充(" ="字符),在某些实现中甚至不是强制性的。
编辑:确定您的评论我发现您在这样的网址中使用了base64编码的字符串:
http://example.com/path/OTC=
base64编码包含在URL中具有特殊含义的字符,因此您需要使用稍微修改过的函数(https://stackoverflow.com/a/5835352/2737514):
function base64_url_encode($input) {
return strtr(base64_encode($input), '+/=', '-_,');
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_,', '+/='));
}
但是,由于您的代码适用于某些数字,因此.htaccess可能无法正确解析URL,或者解释URL的PHP代码存在问题。在没有看到其他代码的情况下,我无法提供更多帮助。
答案 1 :(得分:1)
它似乎对我来说很好
请您使用以下代码进行测试
echo base64_encode(101);
echo base64_decode(base64_encode(101));
<强> DEMO 强>
Base64编码数据占用的空间比原始数据多33%。
所以这些数字不应该是个问题