@@ -147,38 +147,28 @@ private function post($url, $body)
147147 /**
148148 * 构建时间戳防盗链鉴权的访问外链
149149 *
150- * @param string $host 带访问协议的域名
151- * @param string $fileName 原始文件名,不需要urlencode
152- * @param string $queryStringArray 查询参数命名数组,不需要urlencode
153- * @param string $encryptKey 时间戳防盗链密钥
154- * @param string $deadline 链接有效期时间戳(以秒为单位)
150+ * @param string $rawUrl 需要签名的资源url
151+ * @param string $encryptKey 时间戳防盗链密钥
152+ * @param string $durationInSeconds 链接的有效期(以秒为单位)
155153 *
156- * @return string 带鉴权信息的资源外链,参考 examples/cdn_manager .php 代码
154+ * @return string 带鉴权信息的资源外链,参考 examples/cdn_manager_timestamp_antileech .php 代码
157155 */
158- public static function createTimestampAntiLeechUrl ($ host , $ fileName , $ queryStringArray , $ encryptKey , $ deadline )
156+ public static function createTimestampAntiLeechUrl ($ rawUrl , $ encryptKey , $ durationInSeconds )
159157 {
160- $ encodedFileName = str_replace ("+ " , "%20 " , urlencode ($ fileName ));
161- if (!empty ($ queryStringArray )) {
162- $ queryStrings = array ();
163- foreach ($ queryStringArray as $ key => $ value ) {
164- array_push ($ queryStrings , urlencode ($ key ) . '= ' . urlencode ($ value ));
165- }
166- $ queryString = implode ('& ' , $ queryStrings );
167- $ urlToSign = $ host . '/ ' . $ encodedFileName . '? ' . $ queryString ;
168- } else {
169- $ urlToSign = $ host . '/ ' . $ encodedFileName ;
170- }
171158
172- $ path = '/ ' . $ encodedFileName ;
159+ $ parsedUrl = parse_url ($ rawUrl );
160+
161+ $ deadline = time () + $ durationInSeconds ;
173162 $ expireHex = dechex ($ deadline );
163+ $ path = isset ($ parsedUrl ['path ' ]) ? $ parsedUrl ['path ' ] : '' ;
174164
175165 $ strToSign = $ encryptKey . $ path . $ expireHex ;
176166 $ signStr = md5 ($ strToSign );
177167
178- if (! empty ( $ queryString )) {
179- $ signedUrl = $ urlToSign . '&sign= ' . $ signStr . '&t= ' . $ expireHex ;
168+ if (isset ( $ parsedUrl [ ' query ' ] )) {
169+ $ signedUrl = $ rawUrl . '&sign= ' . $ signStr . '&t= ' . $ expireHex ;
180170 } else {
181- $ signedUrl = $ urlToSign . '?sign= ' . $ signStr . '&t= ' . $ expireHex ;
171+ $ signedUrl = $ rawUrl . '?sign= ' . $ signStr . '&t= ' . $ expireHex ;
182172 }
183173
184174 return $ signedUrl ;
0 commit comments