常用的common function库(三)

<?php
function remove_xss($val) {
	$val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);
	$search = 'abcdefghijklmnopqrstuvwxyz';
	$search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	$search .= '1234567890!@#$%^&*()';
	$search .= '~`";:?+/={}[]-_|\'\\';
	for ($i = 0; $i < strlen($search); $i++) {
		$val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;
		$val = preg_replace('/(&#0{0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ;
	}
	$ra1 = array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
	$ra2 = array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
	$ra = array_merge($ra1, $ra2);
	$found = true; 
	while ($found == true) {
		$val_before = $val;
		for ($i = 0; $i < sizeof($ra); $i++) {
			$pattern = '/';
			for ($j = 0; $j < strlen($ra[$i]); $j++) {
				if ($j > 0) {
					$pattern .= '(';
					$pattern .= '(&#[xX]0{0,8}([9ab]);)';
					$pattern .= '|';
					$pattern .= '|(&#0{0,8}([9|10|13]);)';
					$pattern .= ')*';
				}
				$pattern .= $ra[$i][$j];
			}
			$pattern .= '/i';
			$replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2); 
			$val = preg_replace($pattern, $replacement, $val); 
			if ($val_before == $val) {
				$found = false;
			}
		}
	}
	return $val;
}
/*
 *
 *URL生成函数
 *
 */
function URL($url='',$vars='',$suffix=true,$redirect=false,$domain=true){
	$two_domain=false;//用于判断当前域名是否绑定二级域名
	// 解析URL
	$info   =  parse_url($url);
	$url    =  !empty($info['path'])?$info['path']:ACTION_NAME;
	if(false !== strpos($url,'@')) { // 解析域名
		list($url,$host)    =   explode('@',$info['path'], 2);
	}
	// 解析子域名
	if(isset($host)) {
		$domain = $host.(strpos($host,'.')?'':strstr($_SERVER['HTTP_HOST'],'.'));
	}elseif($domain===true){
		$domain = $_SERVER['HTTP_HOST'];
		if(C('APP_SUB_DOMAIN_DEPLOY') ) { // 开启子域名部署

			if($domain!=='localhost'){
				if(C('DOMAIN')){
					$domain=C('DOMAIN');
				}else{
					$domain=$_SERVER['HTTP_HOST'];
				}
			}
			// '子域名'=>array('项目[/分组]');
			foreach (C('APP_SUB_DOMAIN_RULES') as $key => $rule) {
				if(false === strpos($key,'*') && 0=== strpos($url,$rule[0])) {
					if($_SERVER['HTTP_HOST']=='localhost'){
						$domain=$_SERVER['HTTP_HOST'];
					}else{
						$domain = $key.'.'.$domain; // 生成对应子域名
						$url    =  substr_replace($url,'',0,strlen($rule[0]));
					}
					$two_domain=true;//检测到绑定了二级域名赋值
					break;
				}
			}
		}
	}
	// 解析参数
	if(is_string($vars)) { // aaa=1&bbb=2 转换成数组
		parse_str($vars,$vars);
	}elseif(!is_array($vars)){
		$vars = array();
	}
	if(isset($info['query'])) { // 解析地址里面参数 合并到vars
		parse_str($info['query'],$params);
		$vars = array_merge($params,$vars);
	}
	// URL组装
	$depr = C('URL_PATHINFO_DEPR');
	if($url) {
		if(0=== strpos($url,'/')) {// 定义路由
			$route      =   true;
			$url        =   substr($url,1);
			if('/' != $depr) {
				$url    =   str_replace('/',$depr,$url);
			}
		}else{
			if('/' != $depr) { // 安全替换
				$url    =   str_replace('/',$depr,$url);
			}
			// 解析分组、模块和操作
			$url        =   trim($url,$depr);
			$path       =   explode($depr,$url);
			$var        =   array();
			$var[C('VAR_ACTION')]       =   !empty($path)?array_pop($path):ACTION_NAME;
			$var[C('VAR_MODULE')]       =   !empty($path)?array_pop($path):MODULE_NAME;
			if(!$two_domain || $_SERVER['HTTP_HOST']=='localhost') $var[C('VAR_GROUP')]       =  !empty($path)?$path[0]:GROUP_NAME;
			if(C('URL_CASE_INSENSITIVE')) {
				isset($var[C('VAR_ACTION')])&&$var[C('VAR_ACTION')]   =  strtolower($var[C('VAR_ACTION')]);
				isset($var[C('VAR_MODULE')])&&$var[C('VAR_MODULE')]   =  parse_name($var[C('VAR_MODULE')]);
				isset($var[C('VAR_GROUP')])&&$var[C('VAR_GROUP')]    =  strtolower($var[C('VAR_GROUP')]);
			}
			$var=array_filter($var);
			$sf=true;
			if(strtolower($var[C('VAR_ACTION')])==strtolower(C('DEFAULT_ACTION'))&&empty($vars)){
				unset($var[C('VAR_ACTION')]);
				if(strtolower($var[C('VAR_MODULE')])==strtolower(C('DEFAULT_MODULE'))&&empty($vars)){
					unset($var[C('VAR_MODULE')]);
					$sf=false;
				}
			}
			$var=array_filter($var);
			if(!C('APP_SUB_DOMAIN_DEPLOY') && C('APP_GROUP_LIST')) {
				if(!empty($path)) {
					$group                  =   array_pop($path);
					$var[C('VAR_GROUP')]    =   $group;
				}else{
					if(GROUP_NAME != C('DEFAULT_GROUP')) {
						$var[C('VAR_GROUP')]=   GROUP_NAME;
					}
				}
				if(C('URL_CASE_INSENSITIVE') && isset($var[C('VAR_GROUP')])) {
					$var[C('VAR_GROUP')]    =  strtolower($var[C('VAR_GROUP')]);
				}
			}
		}
	}
	if(C('URL_MODEL') == 0) { // 普通模式URL转换
		$url=   __APP__.'?'.http_build_query(array_reverse($var));
		if(!empty($vars)) {
			$vars   =   urldecode(http_build_query($vars));
			$url   .=   '&'.$vars;
		}
	}else{ // PATHINFO模式或者兼容URL模式
		if(isset($route)) {
			$url    =   __APP__.'/'.rtrim($url,$depr);
		}else{
			$url    =   __APP__.'/'.implode($depr,array_reverse($var));
		}
		if(!empty($vars)) { // 添加参数
			foreach ($vars as $var => $val)
			$url .= $depr.$var . $depr . $val;
		}
		if($suffix) {
			if($suffix==true&&C('URL_HTML_SUFFIX')!=''){
				$url.=C('URL_HTML_SUFFIX');
			}
		}
	}
	if($domain) {
		$url   =  (is_ssl()?'https://':'http://').$domain.$url;
	}
	if($redirect) // 直接跳转URL
	redirect($url);
	else
	return $url;
}
/*
 * 验证码输入是否正确检测,正确返回true
 */

function checkVERIFY($value){
	return session(C('VERIFY.verifyName'))== md5(strtolower($value))?true:false;
}
/*
 * 获取系统信息
 */
function get_sysinfo() {
	$sys_info['zlib']           = function_exists('gzclose');//zlib
	$sys_info['safe_mode']      = (boolean) ini_get('safe_mode');//safe_mode = Off
	$sys_info['safe_mode_gid']  = (boolean) ini_get('safe_mode_gid');//safe_mode_gid = Off
	$sys_info['timezone']       = function_exists("date_default_timezone_get") ? date_default_timezone_get() : L('no_setting');
	$sys_info['socket']         = function_exists('fsockopen') ;
	$sys_info['web_server']     = $_SERVER['SERVER_SOFTWARE'];
	$sys_info['phpv']           = phpversion();
	$sys_info['fileupload']     = @ini_get('file_uploads') ? ini_get('upload_max_filesize') :'unknown';
	return $sys_info;
}
/**
 * 把返回的数据集转换成Tree
 * @access public
 * @param array $list 要转换的数据集
 * @param string $pid parent标记字段
 * @param string $level level标记字段
 * @return array
 */
function list_to_tree($list, $pk='id',$pid = 'pid',$child = '_child',$root=0) {
	// 创建Tree
	$tree = array();
	if(is_array($list)) {
		// 创建基于主键的数组引用
		$refer = array();
		foreach ($list as $key => $data) {
			$refer[$data[$pk]] =& $list[$key];
		}
		foreach ($list as $key => $data) {
			// 判断是否存在parent
			$parentId = $data[$pid];
			if ($root == $parentId) {
				$tree[] =& $list[$key];
			}else{
				if (isset($refer[$parentId])) {
					$parent =& $refer[$parentId];
					$parent[$child][] =& $list[$key];
				}
			}
		}
	}
	return $tree;
}

/**
 * 对查询结果集进行排序
 * @access public
 * @param array $list 查询结果
 * @param string $field 排序的字段名
 * @param array $sortby 排序类型
 * asc正向排序 desc逆向排序 nat自然排序
 * @return array
 */
function list_sort_by($list,$field, $sortby='asc') {
	if(is_array($list)){
		$refer = $resultSet = array();
		foreach ($list as $i => $data)
			$refer[$i] = &$data[$field];
		switch ($sortby) {
			case 'asc': // 正向排序
				asort($refer);
				break;
			case 'desc':// 逆向排序
				arsort($refer);
				break;
			case 'nat': // 自然排序
				natcasesort($refer);
				break;
		}
		foreach ( $refer as $key=> $val)
			$resultSet[] = &$list[$key];
		return $resultSet;
	}
	return false;
}
//删除目录
function deleteDir($dirname) {
	if (!file_exists($dirname)) {
		return false;
	}
	if (is_file($dirname) || is_link($dirname)) {
		return unlink($dirname);
	}
	$dir = dir($dirname);
	if($dir){
		while ( false !== $entry = $dir->read()) {
			if ($entry == '.' || $entry == '..') {
				continue;
			}
			deleteDir($dirname . DIRECTORY_SEPARATOR . $entry);
		}
	}
	$dir->close();
	return rmdir($dirname);
}

/*
 * 获取父级名称
 *
 * $arr 数组
 *
 * $pid 指定父id值
 *
 * $id  指定父字段ID名称
 *
 * $name 需要获取的值
 *
 */
function topName($arr=array(),$pid='',$id='id',$name='name'){
	foreach ($arr as $k=>$v){
		if($v[$id]==$pid){
			return $v[$name];
			break;
		}
	}
}


/*
 * 菜单处理
 */
function menuTree($array=array(),$pid=0,$aNewArr=array()){
	if(is_array($array)){
		foreach($array as $k=>$v){
			if($v['pid']==$pid){
				$aNewArr[$k]=$array[$k];
				$aNewArr[$k]['findmenu']=menutree($array,$v['menu_id']);
			}
		}
	}
	return $aNewArr;
}
/*
 *根据父IP返回所有子数据
 */
function findarr($arr=array(),$id=0){
	if(is_array($arr)){
		foreach ($arr as $k => $v){
			if($v['pid']!==$id){
				unset($arr[$k]);
			}
		}
	}
	return array_filter($arr);
}
/*
 * 获取键值
 * */
function getArraykey($arr=array(),$key){
	$newarr=array_keys($arr);
	return $newarr[$key];
}
/*用户名合法性检测*/
function checkUsername($value){
	$arr=explode(",",C('NO_USERNAME'));
	if(in_array(strtolower($value), $arr)){
		return false;
	}else{
		return true;
	}
}
/*
 *字符段长度判断
 * @$str 传入字符串
 * @返回该字符串的长度
 */
function utf8_strlen($str){
	$count = 0;
	for($i = 0; $i < strlen($str); $i++){
		$value = ord($str[$i]);
		if($value > 127){
			if($value >= 192 && $value <= 223)
			$i++;
			elseif($value >= 224 && $value <= 239)
			$i = $i + 2;
			elseif($value >= 240 && $value <= 247)
			$i = $i + 3;
			else
			die('Not a UTF-8 compatible string');
		}
		$count++;
	}
	return $count;
}
/*字符串截取*/
function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) {
	if(utf8_strlen($str)<=$length){
		return $str;
	}
	if(function_exists("mb_substr"))
	$slice = mb_substr($str, $start, $length, $charset);
	elseif(function_exists('iconv_substr')) {
		$slice = iconv_substr($str,$start,$length,$charset);
		if(false === $slice) {
			$slice = '';
		}
	}else{
		$re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
		$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
		$re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
		$re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
		preg_match_all($re[$charset], $str, $match);
		$slice = join("",array_slice($match[0], $start, $length));
	}
	return $suffix ? $slice.'...' : $slice;
}
/**
 * 返回图片附件大小
 * @param $filesize 图片字节
 */
function size($filesize) {
	if($filesize >= 1073741824) {
		$filesize = round($filesize / 1073741824 * 100) / 100 . ' GB';
	} elseif($filesize >= 1048576) {
		$filesize = round($filesize / 1048576 * 100) / 100 . ' MB';
	} elseif($filesize >= 1024) {
		$filesize = round($filesize / 1024 * 100) / 100 . ' KB';
	} else {
		$filesize = $filesize . ' Bytes';
	}
	return $filesize;
}
//创建目录
function mkdirs($path, $mode = 0777){
	$dirs = explode('/',$path);
	$pos = strrpos($path, ".");
	if ($pos === false) {
		$subamount=0;
	}
	else {
		$subamount=1;
	}
	for ($c=0;$c < count($dirs) - $subamount; $c++) {
		$thispath="";
		for ($cc=0; $cc <= $c; $cc++) {
			$thispath.=$dirs[$cc].'/';
		}
		if (!file_exists($thispath)) {
			mkdir($thispath,$mode);
		}
	}
}
/**
 * @todo 过滤编辑器的危险代码
 */
function getEditorContent($v){
	import('ORG.Util.Input');
	return Input::safeHtml($v);
}
//获取真实的ip地址
function getIP()
{
    static $realip;
    if (isset($_SERVER)){
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
            $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
            $realip = $_SERVER["HTTP_CLIENT_IP"];
        } else {
            $realip = $_SERVER["REMOTE_ADDR"];
        }
    } else {
        if (getenv("HTTP_X_FORWARDED_FOR")){
            $realip = getenv("HTTP_X_FORWARDED_FOR");
        } else if (getenv("HTTP_CLIENT_IP")) {
            $realip = getenv("HTTP_CLIENT_IP");
        } else {
            $realip = getenv("REMOTE_ADDR");
        }
    }
    return ip2long($realip);
}

//获取真实的ip地址+地区
function getIpAndArea()
{
    static $realip;
    //$realip = get_client_ip();
    import('ORG.Net.IpLocation');
	$Ipk = new IpLocation('UTFWry.dat'); // 实例化类
	$area = $Ipk->getlocation(); // 获取域名服务器所在的位置
    return $area;
}



//替换敏感词
function rpword($str, $ck)     
{     
	foreach($ck as $v){
		$word = $v['facmc'];
		$str = preg_replace('/'.$word.'/i', '**', $str);
	}
 return $str;   
}

//生成id编号
function get_id_code_md($data){
	ksort($data);
	foreach ($data as $key => $value) {
		$str .= "$key=$value&";
	}
	$sjzf = SJZF();
	$str.="time=".time()."&sjzf=".$sjzf;
	return MD5($str);

}

//生成指定个数的随机字符
function get_id_code_ra($num){
		$chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 
		'i', 'j', 'k', 'l','m', 'n', 'o', 'p', 'q', 'r', 's', 
		't', 'u', 'v', 'w', 'x', 'y','z', 'A', 'B', 'C', 'D', 
		'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L','M', 'N', 'O', 
		'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z', 
		'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '9', '-', '_');
		$sjzf = '';
		for($i = 0; $i < $num; $i++)
		{
			$sjzf .= $chars[mt_rand(0,count($chars)-1)];
		}

		return $sjzf;
}

//获取文档类型
function get_file_type($res){
    switch ($res) {
        case 'doc':
            return "ic-doc";
        case 'docx':
            return "ic-doc";
        case 'ppt':
            return "ic-ppt";
        case 'pptx':
            return "ic-ppt";
        case 'xls':
            return "ic-xls";
        case 'xlsx':
            return "ic-xls";
        case 'pdf':
            return "ic-pdf";
        case 'txt':
            return "ic-txt";
        default:
            return "ic-txt";

    }
}

//输出友好的时间
function mydate($time = NULL) {
    $text = '';
    if($time === NULL) {
    	$time = time();
    }

    $t = time() - $time; //时间差 (秒)
    
    switch($t) {
		case $t == 0 :
			$text = '刚刚'; // 一分钟内
			break;
		case $t < 60 :
			$text = $t . '秒前'; // 一分钟内
			break;
		case $t < 3600 :
			$text = floor($t / 60) . '分钟前'; //一小时内
			break;
		case $t < 3600 * 24 :
			$text = floor($t / (60 * 60)) . '小时前'; // 一天内
			break;
		case $t < 3600 * 24 * 3 :
        	$text = floor($time/(60*60*24)) == 1 ? '昨天 ' . date('H:i', $time) : '前天 ' . date('H:i', $time) ; //昨天和前天
			break;
		case $t < 3600 * 24 * 30 :
			$text = date('m月d日 H:i', $time); //一个月内
			break;
		case $t < 3600 * 24 * 365 :
			$text = date('m月d日', $time); //一年内
			break;
		default:
			$text = date('Y年m月d日', $time); //一年以前
			break;
	}
	return $text;
}

//输出友好的时间
function mydates($time = NULL) {
    $text = '';
    if($time === NULL) {
    	$time = time();
    }

    $t = time() - $time; //时间差 (秒)
    
    switch($t) {
		case $t == 0 :
			$text = '小于1个月'; // 一分钟内
			break;
		case $t < 60 :
			$text = '小于1个月'; // 一分钟内
			break;
		case $t < 3600 :
			$text = '小于1个月'; //一小时内
			break;
		case $t < 3600 * 24 :
			$text = '小于1个月'; // 一天内
			break;
		case $t < 3600 * 24 * 3 :
        	$text = '小于1个月'; //昨天和前天
			break;
		case $t < 3600 * 24 * 30 :
			$text = '小于1个月'; //一个月内
			break;
		case $t < 3600 * 24 * 365 :
			$text = date('n个月', $t); //一年内
			break;
		default:
			$text = date('Y年n个月', $t); //一年以前
			break;
	}
	return $text;
}

//获取时间差
function time_difference($add_time){
		
		$str1 = time();
		$str2 = strtotime($add_time);
		$cha = $str1 - $str2;
		if($cha>0){
			$day = floor($cha/86400);
			$hour = floor(($cha%86400)/3600);
			$minute = floor(($cha%3600)/60);
			$second = floor(($cha%60));
			 		
		}
		$str = '';
		if($day!=0 ){
			return $day.'天前';
		}
		if($hour!=0){
			$str .=$hour.'小时';
		}
		if($minute!=0){
			$str .=$minute.'分';
		}
		//if($second!=0){
		//	$str .=$second.'秒';
		//}
		return $str.'前';		
	}

/**
 * 获取当前页面完整URL地址
 */
function get_url() {
    $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';
    $php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
    $path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
    $relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.$_SERVER['QUERY_STRING'] : $path_info);
    return $sys_protocal.(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '').$relate_url;
}

//banner
function commGetBanner($type){
    $db=M('adv');
    $wh['type']=$type;
    $res=$db->where($wh)->order('id asc')->select();
    //dump($res);
    return $res;
}

//所有课程分类
function commGetTypeList($path){
    $db=M('course_column');
    $where['path']=$path;
    $where['status']=1;
    $res=$db->where($where)->field("*,concat(path,'-',id) as bpath")->order("sort desc,id asc")->select();
    if($res){
        foreach ($res as $k => $v) {
            $res[$k]['sub']=commGetTypeList($path.'-'.$res[$k]['id']);
        }
    }
    return $res;
}

/**
 * mysql varchar default 0
 * @access public
 * @param 
 * @return
 * @todo
 * @throws
 */
function setVarcharDefaultZero($var){
	if($var){
		return $var;
	}else{
		return 0;
	}
}

function isMOblie_new(){
	$agent= $_SERVER['HTTP_USER_AGENT'];
	if(strpos($agent,"iPad")){
		//iPad
		if(strpos($agent,"Android")){
			//安卓
			return true;
		}else{
			//非安卓
			return true;
		}
	}else if(strpos($agent,"NetFront") || strpos($agent,"iPhone") || strpos($agent,"MIDP-2.0") || strpos($agent,"Opera Mini") || strpos($agent,"UCWEB") || strpos($agent,"Android") || strpos($agent,"Windows CE") || strpos($agent,"SymbianOS")){
		//手机
		return true;
	}else{
		return false;
		//电脑
	}
}
function isMobile(){
        $agent= $_SERVER['HTTP_USER_AGENT'];

        $mobile_browser = '0';
        
        if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|ipad|iPad|Android|android|UCWEB|ucweb|OperaMini)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
            $mobile_browser++;
        }
        if((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml')>0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {
            $mobile_browser++;
        }
        $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
        $mobile_agents = array(
                'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
                'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
                'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
                'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
                'newt','noki','oper','palm','pana','pant','phil','play','port','prox',
                'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
                'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
                'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
                'wapr','webc','winw','winw','xda','xda-','Googlebot-Mobile');
        
        if(in_array($mobile_ua,$mobile_agents)) {
            $mobile_browser++;
        }
        
        if (strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini')>0) {
            $mobile_browser++;
        }
        
        if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows')>0) {
            $mobile_browser=0;
        }
        
        if($mobile_browser>0) {
            return true;
            //header("Location: mobile.php"); //手機版
        }else {
            return false;
            //header("Location: pc.php");  //電腦版
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值