php 判断是手机版还是电脑端
function isMobile() {
// 如果有HTTP_X_WAP_PROFILE则一定是移动设备
if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
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;
}
echo isMobile();
乌徒帮发布的wordpress手机版和wordpress主程序相互呼应,不过否子戈想实现当用户用手机访问主站的时候出现进入手机版的提示,虽然可以通过CSS或javascript来实现,然而经过尝试,都不完美。为此,我专门查阅了一些资料,自己建立了一个php判断是否为手机浏览器的函数,用来实现上述目标。
我们通过对浏览器的USER_AGENT来判断用户是否在使用手机浏览器。
USER_AGENT是php用来接收用户访问设备的参数,通过用户访问网站时传送的数据实现。在php用,用echo $_SERVER['HTTP_USER_AGENT']来打印和查看用户的设备(设备使用者才能看到)。而对于程序猿,则利用这个数据判断来访用户所使用的浏览器信息。我们建立以下的php函数:
function is_mobile(){
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if(trim($user_agent) == '')return true;//如果客户端信息为空,我们也认为该设备为手机设备
$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",'Opera Mini','Kindle','Silk/','Mobile','baidu Transcoder');
$is_mobile = false;
foreach($mobile_agents as $device){
if(stristr($user_agent,$device) !== FALSE){
$is_mobile = true;
break;
}
}
return $is_mobile;
}
使用时,只需要用if(is_mobile())进行判断即可,乌徒帮通过这种方法,实现了让顶部的导航在手机浏览时消失,换为适合手机浏览的小导航,不信你可以用手机访问http://www.utubon.com试试看(触屏智能手机效果更佳哦!)。
在这个函数中,我们通过对比我们已经计划好的一些关键字,和$_SERVER['HTTP_USER_AGENT']进行匹配,如果$_SERVER['HTTP_USER_AGENT']中包含了我们给出的一些关键字中的一个,我们就判定用户在使用手机浏览器访问网站。我们要做的就是搜集这些特殊的关键字,它们是确定用户是否为手机浏览用户的唯一标识。
在函数的开头我们有一句if(trim($user_agent) == '')return true;$_SERVER['HTTP_USER_AGENT']为空的话,我们也断定用户在使用手机浏览器,原因是用户如果用桌面版的浏览器访问网站,一般都会有足够的$_SERVER['HTTP_USER_AGENT']信息,而我在阅读一些资料时,有人提到,中国移动会过滤掉$_SERVER['HTTP_USER_AGENT'],因此网站php程序不会接收到$_SERVER['HTTP_USER_AGENT']信息。
为了在PC浏览器上模拟不同的USER_AGENT,我们可以为Chrome或Firefox装上一些插件,如USER AGENT switcher等,可以设置为一些手机设备,让浏览器的USER_AGENT变为手机设备,从而模拟手机访问网站。
php 判断是手机版还是电脑端的更多相关文章
- phpcms v9 黄页实现手机访问手机版,电脑访问电脑版(双模板)
第一步.模板文件夹下,yp复制一份,改名字 ypwap 第二步.修改phpcms/modules/yp/index.php和phpcms/modules/ypwap/index.php //判断客户端 ...
- 判断是手机端还是电脑端 isMobile()
1.在PublicController控制器中写好判断手机端方法. <?php namespace Home\Controller; use Think\Controller; class Pu ...
- discuz php判断是手机访问还是电脑访问网站
首先在模块处填入代码: //手机网页跳转 //如果检测到访问的浏览器为下列一个指定的移动浏览器 则返回true function is_mobile(){ $regex_match="/(n ...
- js 判断当前操作系统 ios, android, 电脑端
一 . js判断移动端的操作系统(ios或Android) $(function () { var u = navigator.userAgent; var isAndroid = u.index ...
- app手机端连接tomcat电脑端服务器
1.你要在电脑端开启并启动tomcat 2.启动nginx,然后需要在nginx中配置好端口号,每一个app的模块端口号是不一样的,需要你进行更改 3.如下图代表app连接的端口: 4.关于sql过滤 ...
- HTML页面如何判断是手机访问还是电脑访问
可以通过js来判断访问设备,代码如下: <script type="text/javascript"> var system ={}; var p = navigato ...
- php如何判断是手机访问还是电脑访问
<?php function isMobile(){ $useragent=isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AG ...
- JS判断是手机访问还是PC端访问网站
<script> if ((navigator.userAgent.match(/(iPhone|iPod|Android|ios|iOS|iPad|Backerry|WebOS|S ...
- js判断是手机访问还是电脑访问
<script type="text/javascript"> <!-- //平台.设备和操作系统 var syste ...
随机推荐
- Day3~Day7(2016/1/23~2016/1/27)
活动的生命周期:onCreate();onStart();onResume();onPause();onStop();onDestroy();onRestart(); 活动的启动模式:standard ...
- golang的cgo支持调用C++的方法
1)swift,貌似官网的推荐 2)extern "C" 我使用后者,用起来比较爽,上代码 c.h #pragma once #ifdef __cplusplus extern & ...
- 单身狗进化——求n!的位数
题目: 分析: 这道题目要求的是n!的位数,显然一种思路是先求出n!的值,假定为res,然后再计算res的位数,这种方法在n比较小时是可以的,如果res为int型,一旦n>16,res就会超出i ...
- 深度学习笔记(四)VGG14
Very Deep Convolutional Networks for Large-Scale Image Recognition 1. 主要贡献 本文探究了参数总数基本不变的情况下,CNN随着层数 ...
- Hadoop+Spark:集群环境搭建
环境准备: 在虚拟机下,大家三台Linux ubuntu 14.04 server x64 系统(下载地址:http://releases.ubuntu.com/14.04.2/ubuntu-14.0 ...
- C#窗体WinForm 文件操作
文件及文件夹操作 C/S:WinForm可以操作客户端文件 Client ServerB/S:浏览器服务 Brower Server 命名空间:using system .IO; 1. File类:文 ...
- AJAX-----06XMLHttpRequest对象的处理返回的XML类型数据
我们首先要确保XML文件是否正常执行 如果访问时候报类似 Parse error: syntax error, unexpected 'version' (T_STRING 这样的错误,我们则需要 ...
- 随机采样方法整理与讲解(MCMC、Gibbs Sampling等)
本文是对参考资料中多篇关于sampling的内容进行总结+搬运,方便以后自己翻阅.其实参考资料中的资料写的比我好,大家可以看一下!好东西多分享!PRML的第11章也是sampling,有时间后面写到P ...
- wex5 实战 二维码生成,扫描,蓝牙打印
给人设计了一个小模块,要求是,把一个单号生成二维码,实现扫描查询单号具体信息,并能通过蓝牙把二维码打印出来.功能实现并不复杂,今天一口气把它搞定.来看效果. 一 效果演示: 二.二维码生成 1 在 ...
- jQuery 选择器 (基础恶补)
jQuery 元素选择器 jQuery 使用 CSS 选择器来选取 HTML 元素. $("p") 选取 <p> 元素. $("p.intro") ...