利用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 相关文章推荐
漂亮但不安全的CTB
Oct 09 PHP
提高PHP编程效率的53个要点(经验小结)
Sep 04 PHP
PHP禁止页面缓存的代码
Oct 23 PHP
PHP中SESSION使用中的一点经验总结
Mar 30 PHP
PHP获取MAC地址的具体实例
Dec 13 PHP
PHP遍历并打印指定目录下所有文件实例
Feb 10 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
Yii实现Command任务处理的方法详解
Jul 14 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
关于laravel框架中的常用目录路径函数
Oct 23 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
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
php实现Mysql简易操作类
2015/10/11 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
2007/08/31 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
总结jQuery插件开发中的一些要点
2016/05/16 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
[01:03:36]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第二场 1月26日
2021/03/11 DOTA
Python splitlines使用技巧
2008/09/06 Python
python实现文本去重且不打乱原本顺序
2016/01/26 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
python 制作简单的音乐播放器
2020/11/25 Python
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
请说出以下代码输出什么
2013/08/30 面试题
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
区域总监的岗位职责
2013/11/21 职场文书
美德好少年事迹材料
2014/01/19 职场文书
如何撰写岗位职责
2014/02/01 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
干部作风建设工作总结
2014/10/29 职场文书
团代会开幕词
2015/01/28 职场文书
感恩老师主题班会
2015/08/12 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技