1

我正在使用 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��

知道我做错了什么吗?

4

1 回答 1

2

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

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

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

解码:

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

更新

此外,它HTTP_REFERER是由浏览器发送的,因此它应该被视为用户输入,因此应该在您之前将base64_encode()其作为有效的 URL 进行清理。

于 2012-08-28T01:13:50.720 回答