base64_decode添加奇怪的字符

时间:2012-08-28 00:03:02

标签: php base64 decode encode

我正在使用base64_encode在返回的URL字符串上使用,但当我到达页面进行解码时(使用base64_decode),它将其添加到字符串的末尾:

-ZH

这是编码字符串的代码:

$sess_refer = 'http://www.mysite.com/create-report.html?view=report&layout=reports&data=selection'

<input type="text" name="referrer" id="referrer" value="<?php echo base64_encode($sess_refer); ?>" />

以下是解码字符串的代码:

$referrer = JRequest::getVar('referrer');
$sess_refer = base64_decode($referrer);

哪个输出:

http://www.mysite.com/create-report.html?view=report&layout=reports&data=selection-zh��

对我做错了什么的想法?

1 个答案:

答案 0 :(得分:2)

这对评论来说有点太长了,但如果它没有用,我会删除这个答案。

您可以通过应用以下技巧使base64_encode()数据网络安全。没有它,+会变成一个空格,可能会破坏编码。

strtr(base64_encode($s), '+/', '-_');

解码:

base64_decode(strtr($s, '-_', '+/'));

<强>更新

此外,HTTP_REFERER由浏览器发送,因此应将其视为用户输入,因此应在base64_encode()之前将其清理为有效的网址。