利用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 相关文章推荐
教你如何把一篇文章按要求分段
Oct 09 PHP
PHP Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
php中设置多级目录session的问题
Aug 08 PHP
如何在PHP中使用正则表达式进行查找替换
Jun 13 PHP
php/js获取客户端mac地址的实现代码
Jul 08 PHP
6个超实用的PHP代码片段
Aug 10 PHP
PHP二维数组排序简单实现方法
Feb 14 PHP
php mysql 封装类实例代码
Sep 18 PHP
PHP实现查询手机归属地的方法详解
Apr 28 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
PHP+iframe模拟Ajax上传文件功能示例
Jul 02 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
apache php模块整合操作指南
2012/11/16 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
js跳转页面方法实现汇总
2014/02/11 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
JavaScript中this详解
2015/09/01 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
bat和python批量重命名文件的实现代码
2016/05/19 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
为什么使用接口?
2014/08/13 面试题
服务之星获奖感言
2014/01/21 职场文书
西门豹教学反思
2014/02/04 职场文书
工作分析计划书
2014/04/30 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
帮一个朋友写的求职信
2014/08/09 职场文书
师范生见习报告范文
2014/11/03 职场文书
高校教师个人总结
2015/02/10 职场文书
党支部评议意见
2015/06/02 职场文书