优化 UA判断

This commit is contained in:
LyLme 2022-03-12 17:52:45 +08:00
parent 9c7fdfba1b
commit c758a68100
2 changed files with 34 additions and 74 deletions

View File

@ -1,78 +1,37 @@
<?php <?php
function isMobile() { function strexists($string, $find) {
// 如果有HTTP_X_WAP_PROFILE则一定是移动设备 return !(strpos($string, $find) === FALSE);
if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) { }
return true;
} function dstrpos($string, $arr) {
// 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 if(empty($string)) return false;
if (isset($_SERVER['HTTP_VIA'])) { foreach((array)$arr as $v) {
// 找不到为flase,否则为true if(strpos($string, $v) !== false) {
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 true;
} }
} }
return false; return false;
} }
if (ismobile() == true) {
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'; $ua = 'wap';
} else { return $ua;
}else{
$ua = 'pc'; $ua = 'pc';
return $ua;
}
} }
function daddslashes($string) { function daddslashes($string) {
if (is_array($string)) { if(is_array($string)) {
foreach ($string as $key => $val) { foreach($string as $key => $val) {
$string[$key] = daddslashes($val, $force, $strip); $string[$key] = daddslashes($val);
} }
} else { } else {
$string = addslashes($strip ? stripslashes($string) : $string); $string = addslashes($string);
} }
return $string; return $string;
} }
@ -126,6 +85,7 @@ function getver($ver) {
return $vn[0] . sprintf("%02d", $vn[1]) . sprintf("%02d", $vn[2]); return $vn[0] . sprintf("%02d", $vn[1]) . sprintf("%02d", $vn[2]);
} }
function saveSetting($k, $v) { function saveSetting($k, $v) {
global $DB;
$v = daddslashes($v); $v = daddslashes($v);
return $DB->query("UPDATE `lylme_config` SET `v` = '$v' WHERE `lylme_config`.`k` = '$k';"); return $DB->query("UPDATE `lylme_config` SET `v` = '$v' WHERE `lylme_config`.`k` = '$k';");
} }

View File

@ -78,7 +78,7 @@ while ($soulist = $DB->fetch($soulists)) {
if ($soulist["sou_st"] == 1) { if ($soulist["sou_st"] == 1) {
echo ' <li> echo ' <li>
<input hidden="" checked="" type="radio" name="type" id="type-' . $soulist["sou_alias"] . '" value="'; <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"]; echo $soulist["sou_waplink"];
} else { } else {
echo $soulist["sou_link"]; echo $soulist["sou_link"];