0

0

javascript - PHP怎样识别手机与电脑的不同访问

php中文网

php中文网

发布时间:2016-06-06 20:51:31

|

1410人浏览过

|

来源于php中文网

原创

像很多网站一样,访问时会识别为手机版或桌面版。
我想应该是用脚本语言实现的吧。

回复内容:

像很多网站一样,访问时会识别为手机版或桌面版。
我想应该是用脚本语言实现的吧。

User-Agent最常用
或者JavaScript判断屏幕宽度、分辨率,然后重定向到相应的mobile版

一般是根据 useragent来判断的。

function is_mobile() {
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$mobile_agents = Array("240x320","acer","acoon","acs-","abacho","ahong","airness","alcatel","amoi","android","anywhereyougo.com","applewebkit/525","applewebkit/532","asus","audio","au-mic","avantogo","becker","benq","bilbo","bird","blackberry","blazer","bleu","cdm-","compal","coolpad","danger","dbtel","dopod","elaine","eric","etouch","fly ","fly_","fly-","go.web","goodaccess","gradiente","grundig","haier","hedy","hitachi","htc","huawei","hutchison","inno","ipad","ipaq","ipod","jbrowser","kddi","kgt","kwc","lenovo","lg ","lg2","lg3","lg4","lg5","lg7","lg8","lg9","lg-","lge-","lge9","longcos","maemo","mercator","meridian","micromax","midp","mini","mitsu","mmm","mmp","mobi","mot-","moto","nec-","netfront","newgen","nexian","nf-browser","nintendo","nitro","nokia","nook","novarra","obigo","palm","panasonic","pantech","philips","phone","pg-","playstation","pocket","pt-","qc-","qtek","rover","sagem","sama","samu","sanyo","samsung","sch-","scooter","sec-","sendo","sgh-","sharp","siemens","sie-","softbank","sony","spice","sprint","spv","symbian","tablet","talkabout","tcl-","teleca","telit","tianyu","tim-","toshiba","tsm","up.browser","utec","utstar","verykool","virgin","vk-","voda","voxtel","vx","wap","wellco","wig browser","wii","windows ce","wireless","xda","xde","zte");
$is_mobile = false;
foreach ($mobile_agents as $device) {
if (stristr($user_agent, $device)) {
$is_mobile = true;
break;
}
}
return $is_mobile;
}

也可参考 https://github.com/easychen/LazyPHP/b...

一般从浏览器的 UA 判断浏览器和系统

还有像上面说的用的响应式设计,个人暂时倾向于判断UA

我也来个大礼包,直接看代码就好。

立即学习PHP免费学习笔记(深入)”;

  /**
     * 手机访问重定向
     *
     * @return void
     */
    public static function mobile_location()
    {
        $_SERVER['HTTP_USER_AGENT'] = empty($_SERVER['HTTP_USER_AGENT']) ? '' : $_SERVER['HTTP_USER_AGENT'];
        $_SERVER['HTTP_ACCEPT'] = empty($_SERVER['HTTP_ACCEPT']) ? '' : $_SERVER['HTTP_ACCEPT'];
        $_SERVER['HTTP_VIA'] = empty($_SERVER['HTTP_VIA']) ? '' : $_SERVER['HTTP_VIA'];
        $browser = '';
        switch (true)
        {
            // ipad
            case (preg_match('/ipad/i', $_SERVER['HTTP_USER_AGENT'])):
                $browser = 'ipad';
                break;
            // Apple/iPhone browser renders as mobile
            case (preg_match('/Android/i', $_SERVER['HTTP_USER_AGENT'])):
                $browser = "android";
                break;
            // Apple/iPhone browser renders as mobile
            case (preg_match('/(apple|iphone|ipod)/i', $_SERVER['HTTP_USER_AGENT']) && preg_match('/mobile/i', $_SERVER['HTTP_USER_AGENT'])):
                $browser = "iphone";
                break;
            // Apple/iPhone browser renders as mobile
            case (preg_match('/IEMobile\/9\.0/i', $_SERVER['HTTP_USER_AGENT'])):
                $browser = "wp7";
                break;
            // Other mobile browsers render as mobile
            case (preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera mobi|palm|palmos|pocket|portalmmm|ppc;
|smartphone|sonyericsson|sqh|spv|symbian|
treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])):
                $browser = "mobile";
                break;
            // Wap browser
            case (((strpos(strtolower($_SERVER['HTTP_ACCEPT']), 'text/vnd.wap.wml') > 0) || (strpos(strtolower($_SERVER['HTTP_ACCEPT']), 'application/vnd.wap.xhtml+xml') > 0)) || ((isset($_SERVER['HTTP_X_WAP_PROFILE']) || isset($_SERVER['HTTP_PROFILE'])))):
                $browser = "mobile";
                break;
            // Shortend user agents
            case (in_array(strtolower(substr($_SERVER['HTTP_USER_AGENT'], 0, 3)), array('lg ' => 'lg ', 'lg-' => 'lg-', 'lg_' => 'lg_', 'lge' => 'lge')));
                $browser = "mobile";
                break;
            // More shortend user agents
            case (in_array(strtolower(substr($_SERVER['HTTP_USER_AGENT'], 0, 4)), array('acs-' => 'acs-', 'amoi' => 'amoi', 'doco' => 'doco', 'eric' => 'eric', 'huaw' =>
                'huaw', 'lct_' => 'lct_', 'leno' => 'leno'
                , 'mobi' => 'mobi', 'mot-' => 'mot-', 'moto' => 'moto', 'nec-' => 'nec-
', 'phil' => 'phil', 'sams' => 'sams', 'sch-' => 'sch-', 'shar' =>
                'shar', 'sie-' => 'sie-', 'wap_' => 'wap_', 'zte-
' => 'zte-')));
                $browser = "mobile";
                break;
            // Render mobile site for mobile search engines
            case (preg_match('/Googlebot-Mobile/i', $_SERVER['HTTP_USER_AGENT']) || preg_match('/YahooSeeker\/M1A1-R2D2/i', $_SERVER['HTTP_USER_AGENT'])):
                $browser = "mobile";
                break;
            case (preg_match('/wap/i', $_SERVER['HTTP_VIA'])):
                $browser = "mobile";
                break;
        }
        return $browser;
    }

useragent 判断,这是语言无关的

user-agent 用来判断操作系统和浏览器类型、版本

一般手机都支持css3,可以用media query对不同屏幕宽度的手机返回不同样式的网页

还能用响应式前端布局,非php

Article Forge
Article Forge

行业文案AI写作软件,可自动为特定主题或行业生成内容

下载

UA+屏幕尺寸,分辨率等结合起来用,因为有些手机自带的浏览器不发ua的~

以下的javascript代码以及php代码可以用来判断iPhone或者iPod – 360weboy – 专注php web开发 | web前端开发。

Javascript

if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) {
   window.location = "http://www.360weboy.com/iphone";
}

本人更倾向于使用服务器端语言,比如php来做判断:

Php

if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPod'))
{
  header('Location: http://www.360weboy.com/iphone');
  exit();
}

360weboy – 专注php web开发 | web前端开发。感兴趣的话可以加入360weboy的qq群-197642724,或者关注360weboy的新浪或者腾讯微博,大家在一起分享讨论开发中的技术以及思想。

给两个通道 应该能解决问题

可以用js判断 比如
http://tangram.baidu.com/api#baidu.pl...
或者是media query
http://www.qianduan.net/responsive-we...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

88

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

90

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

61

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

493

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

16

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

12

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

5

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号