利用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 相关文章推荐
PHP cron中的批处理
Sep 16 PHP
一个比较简单的PHP 分页分组类
Dec 10 PHP
php 高效率写法 推荐
Feb 21 PHP
php 数据库字段复用的基本原理与示例
Jul 22 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
PHP把小数转成整数3种方法
Jun 30 PHP
PHP并发多进程处理利器Gearman使用介绍
May 16 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
Jun 12 PHP
ThinkPHP5和ThinkPHP6的区别
Mar 31 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
php通过ajax实现双击table修改内容
2014/04/28 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
javascript实现电脑和手机版样式切换
2017/11/10 Javascript
详解React中setState回调函数
2018/06/14 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
python统计日志ip访问数的方法
2015/07/06 Python
Python实现爬取逐浪小说的方法
2015/07/07 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
python常用运维脚本实例小结
2020/02/14 Python
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
优秀食品类广告词
2014/03/19 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
工作证明英文模板
2014/10/21 职场文书
酒店温馨提示语
2015/07/14 职场文书
思想工作总结范文
2015/08/12 职场文书
MySQL的Query Cache图文详解
2021/07/01 MySQL
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python
MySQL数据库简介与基本操作
2022/05/30 MySQL