PHP丨如何实现自判断访问是否为手机端来源?-V站相信很多人都会在手机端背景上花心思--因为图片适应了PC端,PE端效果就惨不忍睹。适应了PE端,PC端的背景单调的可怜,对于像西顾这种完美主义者来说,一看到这种丑八怪背景就想关站跑路了。例如,使用西顾图片APi就要判断用户来源是什么,根据判断来源调用西顾图片Api,则代码思路可以是:如果是手机端,则调用pc.png,否则调用pc.png。Advantage:图片调用更精准,减少PE端加载速度,背景恶心情况直接改变。话不多说,今天来演示下如何实现自判断访问是否为手机端来源。 

PHP如何实现自判断来源?

方法一:

判断HTTP_USER_AGENT

$agent = strtolower($_SERVER['HTTP_USER_AGENT']); 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")) { Header("HTTP/1.1 301 Moved Permanently"); header("Location:####"); die; }

方法二:

方法二:判断HTTP_ACCEPT

if (isset($_SERVER['HTTP_ACCEPT']) && (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')) )) {//手机访问 Header("HTTP/1.1 301 Moved Permanently"); header("Location:####"); die; }

更完美的骚操作:

根据上述还有瑕疵的方法,往更高的层次着想:
function isMobile() { if(isset($_SERVER['HTTP_X_WAP_PROFILE'])) { return true; } if(isset ($_SERVER['HTTP_VIA'])) { //找不到为flase,否则为true return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false; } 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' ); // 从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; }
虽然还不是特别完善,但已经可以兼容十分多主流手机了。JS骚操作:
1
2
3
4
5
6
7
8
9
10
11
12
/* ---示例代码----*/
function echo (){
    var a="this is a example";
    
    alert("hello world "+a);
}
/* ---示例代码----*/
   
好了,还有什么不懂的话,自己Google丰衣足食!