我正在使用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��
对我做错了什么的想法?
答案 0 :(得分:2)
这对评论来说有点太长了,但如果它没有用,我会删除这个答案。
您可以通过应用以下技巧使base64_encode()
数据网络安全。没有它,+
会变成一个空格,可能会破坏编码。
strtr(base64_encode($s), '+/', '-_');
解码:
base64_decode(strtr($s, '-_', '+/'));
<强>更新强>
此外,HTTP_REFERER
由浏览器发送,因此应将其视为用户输入,因此应在base64_encode()
之前将其清理为有效的网址。