利用PHP判断是手机移动端还是PC端访问的函数示例


Posted in PHP onDecember 14, 2017

前言

最近在开发项目的时候,分别开发了PC端和手机端,需要实现,用手机访问PC端WWW域名的时候,自动判断跳转到移动端,用电脑访问M域名手机网站的时候,自动跳转到PC端网站,于是有了下面这个判断函数:

示例代码:

/**
 * 移动端判断
 */
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;
}

PHP isset 函数作用

isset函数是检测变量是否设置。

格式:bool isset ( mixed var [, mixed var [, ...]] )

返回值:

  • 若变量不存在则返回 FALSE
  • 若变量存在且其值为NULL,也返回 FALSE
  • 若变量存在且值不为NULL,则返回 TURE
  • 同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE
  • 如果已经使用 unset() 释放了一个变量之后,它将不再是 isset() 。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。

警告: isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数。

<?php
$a = array ('test' => 1, 'hello' => NULL);
var_dump( isset ($a['test') ); // TRUE
var_dump( isset ($a['foo') ); // FALSE
var_dump( isset ($a['hello') ); // FALSE
// 'hello' 等于 NULL,所以被认为是未赋值的。
// 如果想检测 NULL 键值,可以试试下边的方法。
var_dump( array_key_exists('hello', $a) ); // TRUE
?>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
使用Apache的rewrite技术
Jun 22 PHP
php下将多个数组合并成一个数组的方法与实例代码
Feb 03 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
Jun 17 PHP
php中apc缓存使用示例
Dec 25 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
Dec 15 PHP
laravel 5 实现模板主题功能(续)
Mar 02 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 PHP
smarty中常用方法实例总结
Aug 07 PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
Jun 29 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 #PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 #PHP
Laravel使用消息队列需要注意的一些问题
Dec 13 #PHP
实例分析PHP中PHPMailer发邮件
Dec 13 #PHP
使用XHProf查找PHP性能瓶颈的实例
Dec 13 #PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 #PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 #PHP
You might like
html中select语句读取mysql表中内容
2006/10/09 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
2014/01/13 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
2018/09/25 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
python求素数示例分享
2014/02/16 Python
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
Pycharm 2019 破解激活方法图文详解
2019/10/11 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
python利用opencv保存、播放视频
2020/11/02 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
你的自行车健身专家:FaFit24
2016/11/16 全球购物
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
上海期货面试题
2014/01/31 面试题
宇宙与人观后感
2015/06/05 职场文书
会议室使用管理制度
2015/08/06 职场文书
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers