2015-03-22 20:54:54 +00:00
|
|
|
|
<?php
|
|
|
|
|
/*
|
|
|
|
|
* @link http://www.kalcaddle.com/
|
|
|
|
|
* @author warlee | e-mail:kalcaddle@qq.com
|
|
|
|
|
* @copyright warlee 2014.(Shanghai)Co.,Ltd
|
|
|
|
|
* @license http://kalcaddle.com/tools/licenses/license.txt
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2016-12-21 08:01:06 +00:00
|
|
|
|
* client ip address
|
2015-03-22 20:54:54 +00:00
|
|
|
|
*
|
|
|
|
|
* @param boolean $s_type ip类型[ip|long]
|
|
|
|
|
* @return string $ip
|
|
|
|
|
*/
|
|
|
|
|
function get_client_ip($b_ip = true){
|
|
|
|
|
$arr_ip_header = array(
|
2016-12-21 08:01:06 +00:00
|
|
|
|
"HTTP_CLIENT_IP",
|
|
|
|
|
"HTTP_X_FORWARDED_FOR",
|
|
|
|
|
"REMOTE_ADDR",
|
|
|
|
|
"HTTP_CDN_SRC_IP",
|
|
|
|
|
"HTTP_PROXY_CLIENT_IP",
|
|
|
|
|
"HTTP_WL_PROXY_CLIENT_IP"
|
2015-03-22 20:54:54 +00:00
|
|
|
|
);
|
|
|
|
|
$client_ip = 'unknown';
|
|
|
|
|
foreach ($arr_ip_header as $key) {
|
2016-12-21 08:01:06 +00:00
|
|
|
|
if (!empty($_SERVER[$key]) && strtolower($_SERVER[$key]) != "unknown") {
|
|
|
|
|
$client_ip = $_SERVER[$key];
|
|
|
|
|
break;
|
|
|
|
|
}
|
2015-03-22 20:54:54 +00:00
|
|
|
|
}
|
|
|
|
|
if ($pos = strpos($client_ip,',')){
|
|
|
|
|
$client_ip = substr($client_ip,$pos+1);
|
|
|
|
|
}
|
|
|
|
|
return $client_ip;
|
|
|
|
|
}
|
2016-12-21 08:01:06 +00:00
|
|
|
|
function get_host() {
|
|
|
|
|
$protocol = (!empty($_SERVER['HTTPS'])
|
|
|
|
|
&& $_SERVER['HTTPS'] !== 'off'
|
|
|
|
|
|| $_SERVER['SERVER_PORT'] === 443) ? 'https://' : 'http://';
|
2015-03-22 20:54:54 +00:00
|
|
|
|
|
2016-12-21 08:01:06 +00:00
|
|
|
|
if( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
|
|
|
|
|
strlen($_SERVER['HTTP_X_FORWARDED_PROTO']) > 0 ){
|
|
|
|
|
$protocol = $_SERVER['HTTP_X_FORWARDED_PROTO'].'://';
|
|
|
|
|
}
|
|
|
|
|
$url_host = $_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']=='80' ? '' : ':'.$_SERVER['SERVER_PORT']);
|
|
|
|
|
$host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $url_host;
|
|
|
|
|
$host = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : $host;//proxy
|
|
|
|
|
return $protocol.$host;
|
|
|
|
|
}
|
|
|
|
|
// current request url
|
|
|
|
|
function this_url(){
|
|
|
|
|
$url = get_host().$_SERVER['REQUEST_URI'];
|
|
|
|
|
return $url;
|
|
|
|
|
}
|
|
|
|
|
function reset_path($str){
|
|
|
|
|
return str_replace('\\','/',$str);
|
|
|
|
|
}
|
|
|
|
|
function get_webroot($app_path){
|
|
|
|
|
$web_root = str_replace(reset_path($_SERVER['SCRIPT_NAME']),'',$app_path.'index.php').'/';
|
|
|
|
|
if (substr($web_root,-10) == 'index.php/') {//解决部分主机不兼容问题
|
|
|
|
|
$web_root = reset_path($_SERVER['DOCUMENT_ROOT']).'/';
|
|
|
|
|
}
|
|
|
|
|
return $web_root;
|
|
|
|
|
}
|
2015-03-22 20:54:54 +00:00
|
|
|
|
|
2016-12-21 08:01:06 +00:00
|
|
|
|
function is_wap(){
|
|
|
|
|
if(!isset($_SERVER['HTTP_USER_AGENT'])){
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|iphone|ipad|ipod|android|xoom)/i',
|
|
|
|
|
strtolower($_SERVER['HTTP_USER_AGENT']))){
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if((isset($_SERVER['HTTP_ACCEPT'])) &&
|
|
|
|
|
(strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') !== false)){
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// url header data
|
2015-03-22 20:54:54 +00:00
|
|
|
|
function url_header($url){
|
|
|
|
|
$name = '';$length=0;
|
|
|
|
|
$header = @get_headers($url,true);
|
|
|
|
|
if (!$header) return false;
|
|
|
|
|
if(isset($header['Content-Length'])){
|
|
|
|
|
if(is_array($header['Content-Length'])){
|
|
|
|
|
$length = array_pop($header['Content-Length']);
|
|
|
|
|
}else{
|
|
|
|
|
$length = $header['Content-Length'];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(isset($header['Content-Disposition'])){
|
|
|
|
|
if(is_array($header['Content-Disposition'])){
|
|
|
|
|
$dis = array_pop($header['Content-Disposition']);
|
|
|
|
|
}else{
|
|
|
|
|
$dis = $header['Content-Disposition'];
|
|
|
|
|
}
|
|
|
|
|
$i = strpos($dis,"filename=");
|
2016-12-21 08:01:06 +00:00
|
|
|
|
if($i!== false){
|
2015-03-22 20:54:54 +00:00
|
|
|
|
$name = substr($dis,$i+9);
|
2016-12-21 08:01:06 +00:00
|
|
|
|
$j = strpos($name,"; ");//多个参数,
|
|
|
|
|
if($j!== false){
|
|
|
|
|
$name = substr($name,0,$j);
|
|
|
|
|
}
|
2015-03-22 20:54:54 +00:00
|
|
|
|
$name = trim($name,'"');
|
|
|
|
|
}
|
|
|
|
|
}
|
2016-12-21 08:01:06 +00:00
|
|
|
|
if(isset($header['X-OutFileName'])){
|
|
|
|
|
$name = $header['X-OutFileName'];
|
|
|
|
|
}
|
2015-03-22 20:54:54 +00:00
|
|
|
|
if(!$name){
|
2016-12-21 08:01:06 +00:00
|
|
|
|
$name = get_path_this($url);
|
|
|
|
|
if (stripos($name,'?')) $name = substr($name,0,stripos($name,'?'));
|
|
|
|
|
if (!$name) $name = 'index.html';
|
2015-03-22 20:54:54 +00:00
|
|
|
|
}
|
2016-12-21 08:01:06 +00:00
|
|
|
|
$name = rawurldecode($name);
|
|
|
|
|
$name = str_replace(array('/','\\'),'-',$name);//safe;
|
2015-03-22 20:54:54 +00:00
|
|
|
|
return array('length'=>$length,'name'=>$name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2016-12-21 08:01:06 +00:00
|
|
|
|
// check url if can use
|
2015-03-22 20:54:54 +00:00
|
|
|
|
function check_url($url){
|
|
|
|
|
$array = get_headers($url,true);
|
2016-12-21 08:01:06 +00:00
|
|
|
|
$error = array('/404/','/403/','/500/');
|
|
|
|
|
foreach ($error as $value) {
|
|
|
|
|
if (preg_match($value, $array[0])) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
2015-03-22 20:54:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取网络url文件内容,加入ua,以解决防采集的站
|
|
|
|
|
*/
|
|
|
|
|
function curl_get_contents($url){
|
|
|
|
|
$ch = curl_init();
|
|
|
|
|
$timeout = 4;
|
|
|
|
|
$user_agent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1)";
|
|
|
|
|
curl_setopt ($ch, CURLOPT_URL, $url);
|
|
|
|
|
curl_setopt ($ch, CURLOPT_HEADER, 0);
|
|
|
|
|
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
|
|
|
curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent);
|
|
|
|
|
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
|
|
|
|
|
$file_contents = curl_exec($ch);
|
|
|
|
|
curl_close($ch);
|
|
|
|
|
return $file_contents;
|
|
|
|
|
}
|
|
|
|
|
|
2016-12-21 08:01:06 +00:00
|
|
|
|
// refer URL
|
2015-03-22 20:54:54 +00:00
|
|
|
|
function refer_url(){
|
|
|
|
|
return isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function select_var($array){
|
|
|
|
|
if (!is_array($array)) return -1;
|
|
|
|
|
ksort($array);
|
|
|
|
|
$chosen = -1;
|
|
|
|
|
foreach ($array as $k => $v) {
|
|
|
|
|
if (isset($v)) {
|
|
|
|
|
$chosen = $v;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $chosen;
|
|
|
|
|
}
|
|
|
|
|
|
2016-12-21 08:01:06 +00:00
|
|
|
|
/**
|
|
|
|
|
* 解析url获得url参数
|
|
|
|
|
* @param $query
|
|
|
|
|
* @return array array
|
|
|
|
|
*/
|
|
|
|
|
function parse_url_query($url){
|
|
|
|
|
$arr = parse_url($url);
|
|
|
|
|
$queryParts = explode('&',$arr['query']);
|
|
|
|
|
$params = array();
|
|
|
|
|
foreach ($queryParts as $param) {
|
|
|
|
|
$item = explode('=', $param);
|
|
|
|
|
$params[$item[0]] = $item[1];
|
|
|
|
|
}
|
|
|
|
|
return $params;
|
|
|
|
|
}
|
2015-03-22 20:54:54 +00:00
|
|
|
|
|
|
|
|
|
function stripslashes_deep($value){
|
|
|
|
|
$value = is_array($value) ? array_map('stripslashes_deep', $value) : (isset($value) ? stripslashes($value) : null);
|
|
|
|
|
return $value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* GET/POST数据统一入口
|
|
|
|
|
* 将GET和POST的数据进行过滤,去掉非法字符以及hacker code,返回一个数组
|
|
|
|
|
* 注意如果GET和POST有相同的Key,POST优先
|
|
|
|
|
*
|
|
|
|
|
* @return array $_GET和$_POST数据过滤处理后的值
|
|
|
|
|
*/
|
|
|
|
|
function parse_incoming(){
|
|
|
|
|
global $_GET, $_POST,$_COOKIE;
|
|
|
|
|
|
|
|
|
|
$_COOKIE = stripslashes_deep($_COOKIE);
|
|
|
|
|
$_GET = stripslashes_deep($_GET);
|
|
|
|
|
$_POST = stripslashes_deep($_POST);
|
|
|
|
|
$return = array();
|
|
|
|
|
$return = array_merge($_GET,$_POST);
|
2016-12-21 08:01:06 +00:00
|
|
|
|
$remote = array_get_index($return,0);
|
2015-03-22 20:54:54 +00:00
|
|
|
|
$remote = explode('/',trim($remote[0],'/'));
|
|
|
|
|
$return['URLremote'] = $remote;
|
|
|
|
|
return $return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function url2absolute($index_url, $preg_url){
|
|
|
|
|
if (preg_match('/[a-zA-Z]*\:\/\//', $preg_url)) return $preg_url;
|
|
|
|
|
preg_match('/([a-zA-Z]*\:\/\/.*)\//', $index_url, $match);
|
|
|
|
|
$index_url_temp = $match[1];
|
|
|
|
|
|
|
|
|
|
foreach(explode('/', $preg_url) as $key => $var) {
|
|
|
|
|
if ($key == 0 && $var == '') {
|
|
|
|
|
preg_match('/([a-zA-Z]*\:\/\/[^\/]*)\//', $index_url, $match);
|
|
|
|
|
$index_url_temp = $match[1] . $preg_url;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if ($var == '..') {
|
|
|
|
|
preg_match('/([a-zA-Z]*\:\/\/.*)\//', $index_url_temp, $match);
|
|
|
|
|
$index_url_temp = $match[1];
|
|
|
|
|
} elseif ($var != '.') $index_url_temp .= '/' . $var;
|
|
|
|
|
}
|
|
|
|
|
return $index_url_temp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 输出js
|
|
|
|
|
function exec_js($js){
|
|
|
|
|
echo "<script language='JavaScript'>\n" . $js . "</script>\n";
|
|
|
|
|
}
|
|
|
|
|
// 禁止缓存
|
|
|
|
|
function no_cache(){
|
|
|
|
|
header("Pragma:no-cache\r\n");
|
|
|
|
|
header("Cache-Control:no-cache\r\n");
|
|
|
|
|
header("Expires:0\r\n");
|
|
|
|
|
}
|
|
|
|
|
// 生成javascript转向
|
|
|
|
|
function go_url($url, $msg = ''){
|
|
|
|
|
header("Content-type: text/html; charset=utf-8\r\n");
|
|
|
|
|
echo "<script type='text/javascript'>\n";
|
2016-12-21 08:01:06 +00:00
|
|
|
|
echo "window.location.href='$url';";
|
2015-03-22 20:54:54 +00:00
|
|
|
|
echo "</script>\n";
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function send_http_status($i_status, $s_message = ''){
|
|
|
|
|
$a_status = array(
|
|
|
|
|
// Informational 1xx
|
|
|
|
|
100 => 'Continue',
|
|
|
|
|
101 => 'Switching Protocols',
|
|
|
|
|
// Success 2xx
|
|
|
|
|
200 => 'OK',
|
|
|
|
|
201 => 'Created',
|
|
|
|
|
202 => 'Accepted',
|
|
|
|
|
203 => 'Non-Authoritative Information',
|
|
|
|
|
204 => 'No Content',
|
|
|
|
|
205 => 'Reset Content',
|
|
|
|
|
206 => 'Partial Content',
|
|
|
|
|
// Redirection 3xx
|
|
|
|
|
300 => 'Multiple Choices',
|
|
|
|
|
301 => 'Moved Permanently',
|
|
|
|
|
302 => 'Found', // 1.1
|
|
|
|
|
303 => 'See Other',
|
|
|
|
|
304 => 'Not Modified',
|
|
|
|
|
305 => 'Use Proxy', // 306 is deprecated but reserved
|
|
|
|
|
307 => 'Temporary Redirect',
|
|
|
|
|
// Client Error 4xx
|
|
|
|
|
400 => 'Bad Request',
|
|
|
|
|
401 => 'Unauthorized',
|
|
|
|
|
402 => 'Payment Required',
|
|
|
|
|
403 => 'Forbidden',
|
|
|
|
|
404 => 'Not Found',
|
|
|
|
|
405 => 'Method Not Allowed',
|
|
|
|
|
406 => 'Not Acceptable',
|
|
|
|
|
407 => 'Proxy Authentication Required',
|
|
|
|
|
408 => 'Request Timeout',
|
|
|
|
|
409 => 'Conflict',
|
|
|
|
|
410 => 'Gone',
|
|
|
|
|
411 => 'Length Required',
|
|
|
|
|
412 => 'Precondition Failed',
|
|
|
|
|
413 => 'Request Entity Too Large',
|
|
|
|
|
414 => 'Request-URI Too Long',
|
|
|
|
|
415 => 'Unsupported Media Type',
|
|
|
|
|
416 => 'Requested Range Not Satisfiable',
|
|
|
|
|
417 => 'Expectation Failed',
|
|
|
|
|
// Server Error 5xx
|
|
|
|
|
500 => 'Internal Server Error',
|
|
|
|
|
501 => 'Not Implemented',
|
|
|
|
|
502 => 'Bad Gateway',
|
|
|
|
|
503 => 'Service Unavailable',
|
|
|
|
|
504 => 'Gateway Timeout',
|
|
|
|
|
505 => 'HTTP Version Not Supported',
|
|
|
|
|
509 => 'Bandwidth Limit Exceeded'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (array_key_exists($i_status, $a_status)) {
|
|
|
|
|
header('HTTP/1.1 ' . $i_status . ' ' . $a_status[$i_status]);
|
|
|
|
|
}
|
|
|
|
|
if ($s_message) {
|
|
|
|
|
echo $s_message;
|
|
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2016-12-21 08:01:06 +00:00
|
|
|
|
//是否是windows
|
|
|
|
|
function client_is_windows(){
|
|
|
|
|
static $is_windows;
|
|
|
|
|
if(!is_array($is_windows)){
|
|
|
|
|
$is_windows = array(0);
|
|
|
|
|
$os = get_os();
|
|
|
|
|
if(strstr($os,'Windows')){
|
|
|
|
|
$is_windows = array(1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $is_windows[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取操作系统信息 TODO
|
2015-03-22 20:54:54 +00:00
|
|
|
|
function get_os (){
|
|
|
|
|
$agent = $_SERVER['HTTP_USER_AGENT'];
|
2016-12-21 08:01:06 +00:00
|
|
|
|
$preg_find = array(
|
|
|
|
|
"Windows 95" =>array('win','95'),
|
|
|
|
|
"Windows ME" =>array('win 9x','4.90'),
|
|
|
|
|
"Windows 98" =>array('win','98'),
|
|
|
|
|
"Windows 2000" =>array('win','nt 5.0',),
|
|
|
|
|
"Windows XP" =>array('win','nt 5.1'),
|
|
|
|
|
"Windows Vista" =>array('win','nt 6.0'),
|
|
|
|
|
"Windows 7" =>array('win','nt 6.1'),
|
|
|
|
|
"Windows 32" =>array('win','32'),
|
|
|
|
|
"Windows NT" =>array('win','nt'),
|
|
|
|
|
"Mac OS" =>array('Mac OS'),
|
|
|
|
|
"Linux" =>array('linux'),
|
|
|
|
|
"Unix" =>array('unix'),
|
|
|
|
|
"SunOS" =>array('sun','os'),
|
|
|
|
|
"IBM OS/2" =>array('ibm','os'),
|
|
|
|
|
"Macintosh" =>array('Mac','PC'),
|
|
|
|
|
"PowerPC" =>array('PowerPC'),
|
|
|
|
|
"AIX" =>array('AIX'),
|
|
|
|
|
"HPUX" =>array('HPUX'),
|
|
|
|
|
"NetBSD" =>array('NetBSD'),
|
|
|
|
|
"BSD" =>array('BSD'),
|
|
|
|
|
"OSF1" =>array('OSF1'),
|
|
|
|
|
"IRIX" =>array('IRIX'),
|
|
|
|
|
"FreeBSD" =>array('FreeBSD'),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$os='';
|
|
|
|
|
foreach ($preg_find as $key => $value) {
|
|
|
|
|
if(count($value)==1 && stripos($agent,$value[0])){
|
|
|
|
|
$os=$key;break;
|
|
|
|
|
}else if(count($value)==2
|
|
|
|
|
&& stripos($agent,$value[0])
|
|
|
|
|
&& stripos($agent,$value[1])
|
|
|
|
|
){
|
|
|
|
|
$os=$key;break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ($os=='') {$os = "Unknown"; }
|
2015-03-22 20:54:54 +00:00
|
|
|
|
return $os;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//根据扩展名获取mime
|
|
|
|
|
function get_file_mime($ext){
|
|
|
|
|
$mimetypes = array(
|
|
|
|
|
"323" => "text/h323",
|
|
|
|
|
"acx" => "application/internet-property-stream",
|
|
|
|
|
"ai" => "application/postscript",
|
|
|
|
|
"aif" => "audio/x-aiff",
|
|
|
|
|
"aifc" => "audio/x-aiff",
|
|
|
|
|
"aiff" => "audio/x-aiff",
|
|
|
|
|
"asf" => "video/x-ms-asf",
|
|
|
|
|
"asr" => "video/x-ms-asf",
|
|
|
|
|
"asx" => "video/x-ms-asf",
|
|
|
|
|
"au" => "audio/basic",
|
|
|
|
|
"avi" => "video/x-msvideo",
|
|
|
|
|
"axs" => "application/olescript",
|
|
|
|
|
"bas" => "text/plain",
|
|
|
|
|
"bcpio" => "application/x-bcpio",
|
|
|
|
|
"bin" => "application/octet-stream",
|
|
|
|
|
"bmp" => "image/bmp",
|
|
|
|
|
"c" => "text/plain",
|
|
|
|
|
"cat" => "application/vnd.ms-pkiseccat",
|
|
|
|
|
"cdf" => "application/x-cdf",
|
|
|
|
|
"cer" => "application/x-x509-ca-cert",
|
|
|
|
|
"class" => "application/octet-stream",
|
|
|
|
|
"clp" => "application/x-msclip",
|
|
|
|
|
"cmx" => "image/x-cmx",
|
|
|
|
|
"cod" => "image/cis-cod",
|
|
|
|
|
"cpio" => "application/x-cpio",
|
|
|
|
|
"crd" => "application/x-mscardfile",
|
|
|
|
|
"crl" => "application/pkix-crl",
|
|
|
|
|
"crt" => "application/x-x509-ca-cert",
|
|
|
|
|
"csh" => "application/x-csh",
|
|
|
|
|
"css" => "text/css",
|
|
|
|
|
"dcr" => "application/x-director",
|
|
|
|
|
"der" => "application/x-x509-ca-cert",
|
|
|
|
|
"dir" => "application/x-director",
|
|
|
|
|
"dll" => "application/x-msdownload",
|
|
|
|
|
"dms" => "application/octet-stream",
|
|
|
|
|
"doc" => "application/msword",
|
2015-03-30 11:20:38 +00:00
|
|
|
|
"docx" => "application/msword",
|
2015-03-22 20:54:54 +00:00
|
|
|
|
"dot" => "application/msword",
|
|
|
|
|
"dvi" => "application/x-dvi",
|
|
|
|
|
"dxr" => "application/x-director",
|
|
|
|
|
"eps" => "application/postscript",
|
|
|
|
|
"etx" => "text/x-setext",
|
|
|
|
|
"evy" => "application/envoy",
|
|
|
|
|
"exe" => "application/octet-stream",
|
|
|
|
|
"fif" => "application/fractals",
|
|
|
|
|
"flr" => "x-world/x-vrml",
|
2016-12-21 08:01:06 +00:00
|
|
|
|
"flv" => "video/x-flv",
|
|
|
|
|
"f4v" => "application/octet-stream",
|
2015-03-22 20:54:54 +00:00
|
|
|
|
"gif" => "image/gif",
|
|
|
|
|
"gtar" => "application/x-gtar",
|
|
|
|
|
"gz" => "application/x-gzip",
|
|
|
|
|
"h" => "text/plain",
|
|
|
|
|
"hdf" => "application/x-hdf",
|
|
|
|
|
"hlp" => "application/winhlp",
|
|
|
|
|
"hqx" => "application/mac-binhex40",
|
|
|
|
|
"hta" => "application/hta",
|
|
|
|
|
"htc" => "text/x-component",
|
|
|
|
|
"htm" => "text/html",
|
|
|
|
|
"html" => "text/html",
|
|
|
|
|
"htt" => "text/webviewhtml",
|
|
|
|
|
"ico" => "image/x-icon",
|
|
|
|
|
"ief" => "image/ief",
|
|
|
|
|
"iii" => "application/x-iphone",
|
|
|
|
|
"ins" => "application/x-internet-signup",
|
|
|
|
|
"isp" => "application/x-internet-signup",
|
|
|
|
|
"jfif" => "image/pipeg",
|
|
|
|
|
"jpe" => "image/jpeg",
|
|
|
|
|
"jpeg" => "image/jpeg",
|
|
|
|
|
"jpg" => "image/jpeg",
|
2016-12-21 08:01:06 +00:00
|
|
|
|
"js" => "application/javascript",
|
|
|
|
|
"json" => "application/json",
|
2015-03-22 20:54:54 +00:00
|
|
|
|
"latex" => "application/x-latex",
|
|
|
|
|
"lha" => "application/octet-stream",
|
|
|
|
|
"lsf" => "video/x-la-asf",
|
|
|
|
|
"lsx" => "video/x-la-asf",
|
|
|
|
|
"lzh" => "application/octet-stream",
|
|
|
|
|
"m13" => "application/x-msmediaview",
|
|
|
|
|
"m14" => "application/x-msmediaview",
|
|
|
|
|
"m3u" => "audio/x-mpegurl",
|
2016-12-21 08:01:06 +00:00
|
|
|
|
'm4a' => "audio/mp4",
|
|
|
|
|
'm4v' => "audio/mp4",
|
2015-03-22 20:54:54 +00:00
|
|
|
|
"man" => "application/x-troff-man",
|
|
|
|
|
"mdb" => "application/x-msaccess",
|
|
|
|
|
"me" => "application/x-troff-me",
|
|
|
|
|
"mht" => "message/rfc822",
|
|
|
|
|
"mhtml" => "message/rfc822",
|
|
|
|
|
"mid" => "audio/mid",
|
|
|
|
|
"mny" => "application/x-msmoney",
|
|
|
|
|
"mov" => "video/quicktime",
|
|
|
|
|
"movie" => "video/x-sgi-movie",
|
|
|
|
|
"mp2" => "video/mpeg",
|
|
|
|
|
"mp3" => "audio/mpeg",
|
2016-12-21 08:01:06 +00:00
|
|
|
|
"mp4" => "video/mp4",
|
|
|
|
|
"mp4v" => "video/mp4",
|
2015-03-22 20:54:54 +00:00
|
|
|
|
"mpa" => "video/mpeg",
|
|
|
|
|
"mpe" => "video/mpeg",
|
|
|
|
|
"mpeg" => "video/mpeg",
|
|
|
|
|
"mpg" => "video/mpeg",
|
|
|
|
|
"mpp" => "application/vnd.ms-project",
|
|
|
|
|
"mpv2" => "video/mpeg",
|
|
|
|
|
"ms" => "application/x-troff-ms",
|
|
|
|
|
"mvb" => "application/x-msmediaview",
|
|
|
|
|
"nws" => "message/rfc822",
|
|
|
|
|
"oda" => "application/oda",
|
2016-12-21 08:01:06 +00:00
|
|
|
|
"ogg" => "audio/ogg",
|
|
|
|
|
"oga" => "audio/ogg",
|
|
|
|
|
"ogv" => "audio/ogg",
|
2015-03-22 20:54:54 +00:00
|
|
|
|
"p10" => "application/pkcs10",
|
|
|
|
|
"p12" => "application/x-pkcs12",
|
|
|
|
|
"p7b" => "application/x-pkcs7-certificates",
|
|
|
|
|
"p7c" => "application/x-pkcs7-mime",
|
|
|
|
|
"p7m" => "application/x-pkcs7-mime",
|
|
|
|
|
"p7r" => "application/x-pkcs7-certreqresp",
|
|
|
|
|
"p7s" => "application/x-pkcs7-signature",
|
|
|
|
|
"pbm" => "image/x-portable-bitmap",
|
|
|
|
|
"pdf" => "application/pdf",
|
|
|
|
|
"pfx" => "application/x-pkcs12",
|
|
|
|
|
"pgm" => "image/x-portable-graymap",
|
|
|
|
|
"pko" => "application/ynd.ms-pkipko",
|
|
|
|
|
"pma" => "application/x-perfmon",
|
|
|
|
|
"pmc" => "application/x-perfmon",
|
|
|
|
|
"pml" => "application/x-perfmon",
|
|
|
|
|
"pmr" => "application/x-perfmon",
|
|
|
|
|
"pmw" => "application/x-perfmon",
|
|
|
|
|
"png" => "image/png",
|
|
|
|
|
"pnm" => "image/x-portable-anymap",
|
|
|
|
|
"pot," => "application/vnd.ms-powerpoint",
|
|
|
|
|
"ppm" => "image/x-portable-pixmap",
|
|
|
|
|
"pps" => "application/vnd.ms-powerpoint",
|
|
|
|
|
"ppt" => "application/vnd.ms-powerpoint",
|
2015-03-30 11:20:38 +00:00
|
|
|
|
"pptx" => "application/vnd.ms-powerpoint",
|
2015-03-22 20:54:54 +00:00
|
|
|
|
"prf" => "application/pics-rules",
|
|
|
|
|
"ps" => "application/postscript",
|
|
|
|
|
"pub" => "application/x-mspublisher",
|
|
|
|
|
"qt" => "video/quicktime",
|
|
|
|
|
"ra" => "audio/x-pn-realaudio",
|
|
|
|
|
"ram" => "audio/x-pn-realaudio",
|
|
|
|
|
"ras" => "image/x-cmu-raster",
|
|
|
|
|
"rgb" => "image/x-rgb",
|
|
|
|
|
"rmi audio/mid" => "http://www.dreamdu.com",
|
|
|
|
|
"roff" => "application/x-troff",
|
|
|
|
|
"rtf" => "application/rtf",
|
|
|
|
|
"rtx" => "text/richtext",
|
|
|
|
|
"scd" => "application/x-msschedule",
|
|
|
|
|
"sct" => "text/scriptlet",
|
|
|
|
|
"setpay" => "application/set-payment-initiation",
|
|
|
|
|
"setreg" => "application/set-registration-initiation",
|
|
|
|
|
"sh" => "application/x-sh",
|
|
|
|
|
"shar" => "application/x-shar",
|
|
|
|
|
"sit" => "application/x-stuffit",
|
|
|
|
|
"snd" => "audio/basic",
|
|
|
|
|
"spc" => "application/x-pkcs7-certificates",
|
|
|
|
|
"spl" => "application/futuresplash",
|
|
|
|
|
"src" => "application/x-wais-source",
|
|
|
|
|
"sst" => "application/vnd.ms-pkicertstore",
|
|
|
|
|
"stl" => "application/vnd.ms-pkistl",
|
|
|
|
|
"stm" => "text/html",
|
|
|
|
|
"svg" => "image/svg+xml",
|
|
|
|
|
"sv4cpio" => "application/x-sv4cpio",
|
|
|
|
|
"sv4crc" => "application/x-sv4crc",
|
|
|
|
|
"swf" => "application/x-shockwave-flash",
|
|
|
|
|
"t" => "application/x-troff",
|
|
|
|
|
"tar" => "application/x-tar",
|
|
|
|
|
"tcl" => "application/x-tcl",
|
|
|
|
|
"tex" => "application/x-tex",
|
|
|
|
|
"texi" => "application/x-texinfo",
|
|
|
|
|
"texinfo" => "application/x-texinfo",
|
|
|
|
|
"tgz" => "application/x-compressed",
|
|
|
|
|
"tif" => "image/tiff",
|
|
|
|
|
"tiff" => "image/tiff",
|
|
|
|
|
"tr" => "application/x-troff",
|
|
|
|
|
"trm" => "application/x-msterminal",
|
|
|
|
|
"tsv" => "text/tab-separated-values",
|
|
|
|
|
"txt" => "text/plain",
|
|
|
|
|
"uls" => "text/iuls",
|
|
|
|
|
"ustar" => "application/x-ustar",
|
|
|
|
|
"vcf" => "text/x-vcard",
|
|
|
|
|
"vrml" => "x-world/x-vrml",
|
2016-12-21 08:01:06 +00:00
|
|
|
|
"wav" => "audio/wav",
|
2015-03-22 20:54:54 +00:00
|
|
|
|
"wcm" => "application/vnd.ms-works",
|
|
|
|
|
"wdb" => "application/vnd.ms-works",
|
2016-12-21 08:01:06 +00:00
|
|
|
|
"webm" => "video/webm",
|
|
|
|
|
"webmv" => "video/webm",
|
2015-03-22 20:54:54 +00:00
|
|
|
|
"wks" => "application/vnd.ms-works",
|
|
|
|
|
"wmf" => "application/x-msmetafile",
|
|
|
|
|
"wps" => "application/vnd.ms-works",
|
|
|
|
|
"wri" => "application/x-mswrite",
|
|
|
|
|
"wrl" => "x-world/x-vrml",
|
|
|
|
|
"wrz" => "x-world/x-vrml",
|
|
|
|
|
"xaf" => "x-world/x-vrml",
|
|
|
|
|
"xbm" => "image/x-xbitmap",
|
|
|
|
|
"xla" => "application/vnd.ms-excel",
|
|
|
|
|
"xlc" => "application/vnd.ms-excel",
|
|
|
|
|
"xlm" => "application/vnd.ms-excel",
|
|
|
|
|
"xls" => "application/vnd.ms-excel",
|
2015-03-30 11:20:38 +00:00
|
|
|
|
"xlsx" => "application/vnd.ms-excel",
|
2015-03-22 20:54:54 +00:00
|
|
|
|
"xlt" => "application/vnd.ms-excel",
|
|
|
|
|
"xlw" => "application/vnd.ms-excel",
|
|
|
|
|
"xof" => "x-world/x-vrml",
|
|
|
|
|
"xpm" => "image/x-xpixmap",
|
|
|
|
|
"xwd" => "image/x-xwindowdump",
|
|
|
|
|
"z" => "application/x-compress",
|
|
|
|
|
"zip" => "application/zip"
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
//代码 或文本浏览器输出
|
|
|
|
|
$text = array('oexe','inc','inf','csv','log','asc','tsv');
|
|
|
|
|
$code = array("abap","abc","as","ada","adb","htgroups","htpasswd","conf","htaccess","htgroups",
|
|
|
|
|
"htpasswd","asciidoc","asm","ahk","bat","cmd","c9search_results","cpp","c","cc","cxx","h","hh","hpp",
|
|
|
|
|
"cirru","cr","clj","cljs","CBL","COB","coffee","cf","cson","Cakefile","cfm","cs","css","curly","d",
|
|
|
|
|
"di","dart","diff","patch","Dockerfile","dot","dummy","dummy","e","ejs","ex","exs","elm","erl",
|
|
|
|
|
"hrl","frt","fs","ldr","ftl","gcode","feature",".gitignore","glsl","frag","vert","go","groovy",
|
|
|
|
|
"haml","hbs","handlebars","tpl","mustache","hs","hx","html","htm","xhtml","erb","rhtml","ini",
|
|
|
|
|
"cfg","prefs","io","jack","jade","java","js","jsm","json","jq","jsp","jsx","jl","tex","latex",
|
|
|
|
|
"ltx","bib","lean","hlean","less","liquid","lisp","ls","logic","lql","lsl","lua","lp","lucene",
|
|
|
|
|
"Makefile","GNUmakefile","makefile","OCamlMakefile","make","md","markdown","mask","matlab",
|
|
|
|
|
"mel","mc","mush","mysql","nix","m","mm","ml","mli","pas","p","pl","pm","pgsql","php","phtml",
|
|
|
|
|
"ps1","praat","praatscript","psc","proc","plg","prolog","properties","proto","py","r","Rd",
|
|
|
|
|
"Rhtml","rb","ru","gemspec","rake","Guardfile","Rakefile","Gemfile","rs","sass","scad","scala",
|
|
|
|
|
"scm","rkt","scss","sh","bash",".bashrc","sjs","smarty","tpl","snippets","soy","space","sql",
|
|
|
|
|
"styl","stylus","svg","tcl","tex","txt","textile","toml","twig","ts","typescript","str","vala",
|
2016-12-21 08:01:06 +00:00
|
|
|
|
"vbs","vb","vm","v","vh","sv","svh","vhd","vhdl","xml","rdf","rss","log",
|
2015-03-22 20:54:54 +00:00
|
|
|
|
"wsdl","xslt","atom","mathml","mml","xul","xbl","xaml","xq","yaml","yml","htm",
|
|
|
|
|
"xib","storyboard","plist","csproj");
|
|
|
|
|
if (array_key_exists($ext,$mimetypes)){
|
|
|
|
|
return $mimetypes[$ext];
|
|
|
|
|
}else{
|
|
|
|
|
if(in_array($ext,$text) || in_array($ext,$code)){
|
|
|
|
|
return "text/plain";
|
|
|
|
|
}
|
|
|
|
|
return 'application/octet-stream';
|
|
|
|
|
}
|
|
|
|
|
}
|