阿里云CDN A方式鉴权php函数
php 阿里云CDN鉴权token代码,记录,直接返回可以访问的url,代码生成的tok默认有效时间为10分钟,如果需要时间限制宽一点自己进行函数修改!
<?php
/*
计算阿里云CDN token A方式 [林风博客]
$url 需要访问的URL
$key 鉴权KEY 空代表默认
*/
function CDN_Token($url,$key='416541UYFYUFYrfgt4') {
if(!is_url($url)) {
return false;
}
$postfix=getUrlPostfix($url);
$postfix_array=array('mp3','mp4','jpg','png','zip','rar','7z','js','css');
// 允许通过的后缀文件
if(in_array($postfix,$postfix_array)==false) {
return false;
}
//如果后缀不在允许范围直接返回结束
$url_array=parse_url($url);
$domain=$url_array['scheme']."://".$url_array['host'];
//提取传递URL的域名及http(s)前缀
$name=basename($url_array['path']);
//提取URL域名文件名
$path=getSubstr($url_array['path'],$name);
//提取URL文件名前面路径
$name=Chinese_coding($name);
//文件名判断进行编码
$time=strtotime("+10 minute");
//有效时间,十分钟
$filename=$domain.$path.$name;
//重新组合传递的URL
$sstring = $path.$name."-".$time."-0-0-".$key;
$auth_key="?auth_key=".$time."-0-0-".md5($sstring);
//token生成
return $filename.$auth_key;
//返回鉴权URL
}
//echo CDN_Token("https://oss.hlhasd.com/Resources/Music/绾绾 - 盗将行(女独版)(翻自 花粥).mp3");
/* Chinese_coding 判断是否为中文,中文urlencode进行编码,非中文直接返回*/
function Chinese_coding($str) {
if(preg_match("/[\x7f-\xff]/", $str)) {
return urlencode($str);
} else {
return $str;
}
}
/* getSubstr 取文本左边内容 */
function getSubstr($str, $rightStr) {
$right = strpos($str, $rightStr);
return substr($str, 0, $right);
}
/* is_url 判断是否为合法URL */
function is_url($url) {
$r = "/http[s]?:\/\/[\w.]+[\w\/]*[\w.]*\??[\w=&\+\%]*/is";
if(preg_match($r,$url)) {
return true;
} else {
return false;
}
}
/* getUrlPostfix 取url文件后缀名称*/
function getUrlPostfix ($url) {
$url_arr = explode('.', $url);
$postfix = $url_arr[count($url_arr) - 1];
$substr = substr($postfix, 0, 3);
return $substr;
}
?>