最近用单点登陆做一个系统,登陆后需要回调,为了不明文展示,就用了base64_encode进行转码,而转出来的 base64 是有左斜杠”/“的。
恰巧 ThinkPHP 里面对 URL 参数的定义可以这样: /name/abc 等同于 ?name=abc
解决方案
编码部分:
function urlsafe_b64encode($string) {
$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}
解码部分:
function urlsafe_b64decode($string) {
$data = str_replace(array('-','_'),array('+','/'),$string);
$mod4 = strlen($data) % 4;
if ($mod4) {
$data .= substr('====', $mod4);
}
return base64_decode($data);
}