求一个 用 PHP 判断 是否 移动端与 桌面端 正确率较高的方法? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ji1043
V2EX    问与答

求一个 用 PHP 判断 是否 移动端与 桌面端 正确率较高的方法?

  •  
  • &bsp; ji1043 2015-04-12 09:29:27 +08:00 3627 次点击
    这是一个创建于 3836 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用场景为 分配不同的广告所需要,百度了下 方法有很多,但不知道哪个更加准确。

    13 条回复    2015-04-12 21:09:55 +08:00
    daijia1123
        1
    daijia1123  
       2015-04-12 09:37:04 +08:00   2
    ETiV
        2
    ETiV  
       2015-04-12 09:52:43 +08:00 via iPhone
    放到前端用JS做,navigator里有个platform还是arch之类的,能返回CPU是不是arm。
    likang
        3
    likang  
       2015-04-12 10:26:28 +08:00   1
    ji1043
        4
    ji1043  
    OP
       2015-04-12 10:43:44 +08:00
    @ETiV js的话 手机禁用 js 那不就残废了
    ji1043
        5
    ji1043  
    OP
       2015-04-12 10:44:33 +08:00
    @likang
    @daijia1123

    去看看
    raincious
        6
    raincious  
       2015-04-12 11:39:01 +08:00 via Android
    @ji1043

    你可以做个页面给禁用了Javascript的人一个提示,比如用noscript,提示让他们开启Javascript。

    如果你想让网页在用户禁用了各种功能的前提下正常工作,这也太难了。比如如果用户禁止了图片加载,那最好就听天由命了,别想着用CSS画一个出来 :)
    laoyuan
        7
    laoyuan  
       2015-04-12 11:58:20 +08:00
    @ETiV 现在也有x86的手机,不过可以忽略了,不知道以后会不会扩大份额
    Septembers
        8
    Septembers  
       2015-04-12 12:40:59 +08:00 via Android
    @raincious 还有一个问题 主动禁用Javascript的用户也想必非常注意安全
    aisin
        9
    aisin  
       2015-04-12 13:25:18 +08:00
    LeopardDennis
        10
    LeopardDennis  
       2015-04-12 16:44:08 +08:00
    mobiledetect + 1
    superliang
        11
    superliang  
       2015-04-12 18:46:22 +08:00
    function ismobile() {
    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
    if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
    return true;

    //此条摘自TPM智能切换模板引擎,适合TPM开发
    if(isset ($_SERVER['HTTP_CLIENT']) &&'PhoneClient'==$_SERVER['HTTP_CLIENT'])
    return true;
    //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
    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;
    }
    if (ismobile()){echo "手机!";}
    ETiV
        12
    ETiV  
       2015-04-12 19:02:47 +08:00 via iPhone
    禁了JS貌似广告都显示不出来了……

    这不是重点,N多网站也会出问题……
    mudone
        13
    mudone  
       2015-04-12 21:09:55 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2733 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 12:14 PVG 20:14 LAX 05:14 JFK 08:14
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86