阿里云CDN A方式鉴权php函数

作者: 管理员 分类: PHP后端,源码展示 发布时间: 2020-10-01 12:21

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;
}
?>

发表评论

电子邮件地址不会被公开。