1. 程式人生 > >ThinkPHP使用 base64_encode後帶左斜槓”/“的解決方案

ThinkPHP使用 base64_encode後帶左斜槓”/“的解決方案

最近用單點登陸做一個系統,登陸後需要回調,為了不明文展示,就用了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);
}