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;
}

上面的方法也存在一些小问题,这里我根据自己的经验来告诉大我们可以使用屏幕宽度来实现再加机器类型了,因为有时HTTP_USER_AGENT信息在我们上面并未定义过了,不过上面实现几乎兼容了主流手机了。

我们还可以使用js

<html>

 <body>

  <script type="text/javascript">
   function browserRedirect() {
    var sUserAgent = navigator.userAgent.toLowerCase();
    var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
    var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
    var bIsMidp = sUserAgent.match(/midp/i) == "midp";
    var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
    var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
    var bIsAndroid = sUserAgent.match(/android/i) == "android";
    var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
    var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";

    if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
     window.location.href = 'http://url/mobile.html';
    } else {
     window.location = 'http://url/pc.html';
    }

   }

   browserRedirect();
  </script>

 </body>
</html> 

时间: 2024-09-26 08:17:38

php 判断访问者是否手机客户端实例的相关文章

js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码_javascript技巧

实例一.比较简单粗暴缺少点类型判断 <script type="text/javascript"> var sUserAgent = navigator.userAgent.toLowerCase(); var bIsIpad = sUserAgent.match(/ipad/i) == "ipad"; var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os"; v

【ASP.NET】判断访问网站的客户端是PC还是手机

原文:[ASP.NET]判断访问网站的客户端是PC还是手机 主要就是通过客户端传递的User-agent来判断访问网站的客户端是PC还是手机,.NET中就是Request.ServerVariables["HTTP_USER_AGENT"]. 比如正常pc是: Mozilla/5.0 (Windows NT 6.1; rv:27.0) Gecko/20100101 Firefox/27.0 常用手机的是: Nokia5320的是: Nokia 5320/UCWEB7.0.1.34/28

Javascript判断手机浏览器实例代码

最近准备做一个手机端的网站.所以在网上找了几个判断是否是手机浏览器的js脚本,贴上来,分享下: 1.如何判断是否为移动终端 利用正则match, 匹配navigator.userAgent是否含有字符串AppleWebKit*****Mobile 安卓qq浏览器HD版 只有AppleWebKit 2手机语言版本的判断 使用navigator.browserLanguage 便可得出windows phone语言版本, 当然可恶的小小手机语言版本也有兼容性的差异,兼容Mozilla,以及Apple

php实现读取手机客户端浏览器的类

 这篇文章主要介绍了php实现读取手机客户端浏览器的类,可实现取手机号码,浏览器报头信息,取得手机类型,取得手机IP等功能,需要的朋友可以参考下     本文实例讲述了php实现读取手机客户端浏览器的类.分享给大家供大家参考.具体分析如下: 这里介绍的手机信息函数类有取手机号码,浏览器报头信息,取得手机类型,取得手机IP等功能. 代码如下: <?php /** * 类名: mobile * 描述: 手机信息类 * 其他: 偶然 编写 */   class mobile{ /** * 函数名称:

手机客户端交互设计原则及信息展现方式

在手机上浏览信息,存在着太多的局限,手机屏幕小注定了一页不能显示太多的信息,环境光线的变化注定页面设计不能过于花哨,流量限制注定不能有太多的图片和样式. 如果让你的用户直接在手机上浏览为web所设计的网页,即使是经过一些手机浏览器的优化,体验还是会很糟糕,甚至有时候会让人难以忍受. 如何调整信息展现方式,使内容能在小屏幕的手机上也更友好的展现呢?接下来我将通过一些原理和实例来阐述自己的观点. 首先,老祖宗Ben Shneiderman的交互设计8项黄金法则我们要铭记于心,因为这些法则也是适用于移

判断是否是手机访问及手机操作系统

我们现在做的项目,移动端和PC端网站访问的是同一套接口,那么如何在接口中区分是手机访问还是PC短访问呢? 核心思想:根据请求头(request header)来判断,如何请求没有header或伪造user agent则无法判断. 先看一些user agent的实例: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0 Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_2 li

“人人•新生力量”战略暨产品发布会推出全新手机客户端

(中国,北京,2013年11月26日)中国领先的实名制社交网络平台--人人公司(纽交所股票代码:RENN)今日召开"人人•新生力量"战略暨产品发布会,宣布推出全新版本的人人网手机客户端,在继承社交网络互动形式的基础上,新增实时聊天和群组等移动通讯元素,以年轻人为核心突破口在愈发激烈的移动社交市场竞争中稳固地盘. 人人公司董事长兼首席执行官陈一舟先生在发布会上表示,"年轻意味着活力和不怕输,对未来的好奇和探索也恰恰推动了互联网行业的创新和历史进步.人人网成立八年来,以年轻人为主

php判断用户是否手机访问代码_php技巧

随着移动设备的普及,网站也会迎来越来越多移动设备的访问.用适应PC的页面,很多时候对手机用户不友好,那么有些时候,我们需要判断用户是否用手机访问,如果是手机的话,就跳转到指定的手机友好页面.这里就介绍一下,如何判断用户是否用手机访问. 自定义的函数如下: $agent = check_wap(); if( $agent ) { header('Location: http://www.jb51.net'); exit; } // check if wap function check_wap()

手机淘鞋更轻松 淘鞋网手机客户端评测

在短短的时间内,身边的朋友们 纷纷换上了苹果手机或http://www.aliyun.com/zixun/aggregation/1996.html">Android手机.时下,这些智能机的超大屏幕和 丰富的上网功能,给我们带来非常完美的无线新生活体验.目前,用手机购物也逐渐成为"达人"最爱的购物方式.一向秉承"只卖正品"的淘鞋网(www.taoxie.com),已经推出了IOS版和Android版的手机客户端,可以随时随地满足达人们用手机进行淘鞋的