优化 UA判断
This commit is contained in:
parent
9c7fdfba1b
commit
c758a68100
|
@ -1,80 +1,39 @@
|
|||
<?php
|
||||
function isMobile() {
|
||||
// 如果有HTTP_X_WAP_PROFILE则一定是移动设备
|
||||
if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
|
||||
return true;
|
||||
}
|
||||
// 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
|
||||
if (isset($_SERVER['HTTP_VIA'])) {
|
||||
// 找不到为flase,否则为true
|
||||
return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
|
||||
}
|
||||
// 判断手机发送的客户端标志,兼容性有待提高。其中'MicroMessenger'是电脑微信
|
||||
if (isset($_SERVER['HTTP_USER_AGENT'])) {
|
||||
$clientkeywords = array(
|
||||
'nokia',
|
||||
'sony',
|
||||
'ericsson',
|
||||
'mot',
|
||||
'samsung',
|
||||
'htc',
|
||||
'sgh',
|
||||
'lg',
|
||||
'sharp',
|
||||
'sie-',
|
||||
'philips',
|
||||
'panasonic',
|
||||
'alcatel',
|
||||
'lenovo',
|
||||
'iphone',
|
||||
'ipod',
|
||||
'blackberry',
|
||||
'meizu',
|
||||
'android',
|
||||
'netfront',
|
||||
'symbian',
|
||||
'ucweb',
|
||||
'windowsce',
|
||||
'palm',
|
||||
'operamini',
|
||||
'operamobi',
|
||||
'openwave',
|
||||
'nexusone',
|
||||
'cldc',
|
||||
'midp',
|
||||
'wap',
|
||||
'mobile',
|
||||
'MicroMessenger'
|
||||
);
|
||||
// 从HTTP_USER_AGENT中查找手机浏览器的关键字
|
||||
if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// 协议法,因为有可能不准确,放到最后判断
|
||||
if (isset($_SERVER['HTTP_ACCEPT'])) {
|
||||
// 如果只支持wml并且不支持html那一定是移动设备
|
||||
// 如果支持wml和html但是wml在html之前则是移动设备
|
||||
if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
function strexists($string, $find) {
|
||||
return !(strpos($string, $find) === FALSE);
|
||||
}
|
||||
if (ismobile() == true) {
|
||||
$ua = 'wap';
|
||||
} else {
|
||||
$ua = 'pc';
|
||||
|
||||
function dstrpos($string, $arr) {
|
||||
if(empty($string)) return false;
|
||||
foreach((array)$arr as $v) {
|
||||
if(strpos($string, $v) !== false) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function checkmobile() {
|
||||
$useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
|
||||
$ualist = array('android', 'midp', 'nokia', 'mobile', 'iphone', 'ipod', 'blackberry', 'windows phone');
|
||||
if((dstrpos($useragent, $ualist) || strexists($_SERVER['HTTP_ACCEPT'], "VND.WAP") || strexists($_SERVER['HTTP_VIA'],"wap"))){
|
||||
$ua = 'wap';
|
||||
return $ua;
|
||||
}else{
|
||||
$ua = 'pc';
|
||||
return $ua;
|
||||
}
|
||||
}
|
||||
|
||||
function daddslashes($string) {
|
||||
if (is_array($string)) {
|
||||
foreach ($string as $key => $val) {
|
||||
$string[$key] = daddslashes($val, $force, $strip);
|
||||
}
|
||||
} else {
|
||||
$string = addslashes($strip ? stripslashes($string) : $string);
|
||||
}
|
||||
return $string;
|
||||
if(is_array($string)) {
|
||||
foreach($string as $key => $val) {
|
||||
$string[$key] = daddslashes($val);
|
||||
}
|
||||
} else {
|
||||
$string = addslashes($string);
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
|
||||
$ckey_length = 4;
|
||||
|
@ -126,6 +85,7 @@ function getver($ver) {
|
|||
return $vn[0] . sprintf("%02d", $vn[1]) . sprintf("%02d", $vn[2]);
|
||||
}
|
||||
function saveSetting($k, $v) {
|
||||
global $DB;
|
||||
$v = daddslashes($v);
|
||||
return $DB->query("UPDATE `lylme_config` SET `v` = '$v' WHERE `lylme_config`.`k` = '$k';");
|
||||
}
|
||||
|
|
|
@ -78,7 +78,7 @@ while ($soulist = $DB->fetch($soulists)) {
|
|||
if ($soulist["sou_st"] == 1) {
|
||||
echo ' <li>
|
||||
<input hidden="" checked="" type="radio" name="type" id="type-' . $soulist["sou_alias"] . '" value="';
|
||||
if ($ua == 'wap' && $soulist["sou_waplink"] != NULL) {
|
||||
if (checkmobile() == 'wap' && $soulist["sou_waplink"] != NULL) {
|
||||
echo $soulist["sou_waplink"];
|
||||
} else {
|
||||
echo $soulist["sou_link"];
|
||||
|
|
Loading…
Reference in New Issue