/** * 图片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; }