コード例 #1
0
ファイル: CommonUtil.php プロジェクト: zwq/unpei
 /**
  * 图片url加密
  * @param $url 图片URL
  * @param $params 加密参数
  */
 public static function encodeImgUrl($url, $params = array())
 {
     // 参数为空,则不进行URL加密
     if (empty($url)) {
         return $url;
     }
     //$url = Yii::app()->params['imgdomain'].ltrim($url,"/");
     // 加密功能是否启动
     if (empty($params) || !($params['enable'] === true)) {
         return $url;
     }
     // 图片根目录
     $dir = $params['dir'];
     // 加密密钥
     $key = $params['key'];
     // 加密串过期时间,单位秒
     $expiry = (int) $params['expiry'];
     // 变化密钥的长度,大于0时每次生产的加密串都不同
     $ckey_len = (int) $params['ckey_len'];
     // 加密串前缀
     $prefix = $params['prefix'];
     // 取图片主路径 http://zzz//主目录
     $url_tmp = str_replace('http://', '', $url);
     $pos = stripos($url_tmp, $dir);
     $signurl = "";
     if (!($pos === false)) {
         $signurl = 'http://' . substr($url_tmp, 0, $pos) . $dir;
     }
     // 图片后缀
     $suffixPos = strrpos($url, ".");
     $suffix = "";
     if (!($suffixPos === false)) {
         $suffix = "." . substr($url, $suffixPos + 1);
     }
     $sign = CommonUtil::authcode($url, 'ENCODE', $key, $expiry, $ckey_len);
     // 加密串中 /转换为 !, +转换为 - ,因为/ + 两个特殊字符会影响后续的解码
     $sign = str_replace("/", "!", $sign);
     $sign = str_replace("+", "-", $sign);
     //$sign = urlencode($sign);
     // 组合最后的图片URL
     $signurl = rtrim($signurl, "/") . "/" . $prefix . $sign . $suffix;
     return $signurl;
 }