利用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 相关文章推荐
特详细的PHPMYADMIN简明安装教程
Aug 01 PHP
PHP 可阅读随机字符串代码
May 26 PHP
一个典型的PHP分页实例代码分享
Jul 28 PHP
Sorting Array Values in PHP(数组排序)
Sep 15 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
php数据类型判断函数有哪些
Sep 23 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
php对象和数组相互转换的方法
May 12 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
Nov 22 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
laravel 之 Eloquent 模型修改器和序列化示例
Oct 17 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 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开发微信支付的代码分享
2014/05/25 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
读jQuery之八 包装事件对象
2011/06/21 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
利用python3随机生成中文字符的实现方法
2017/11/24 Python
Python星号*与**用法分析
2018/02/02 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
python中xlutils库用法浅析
2020/12/29 Python
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
Square Off美国/加拿大:世界上最聪明的国际象棋棋盘
2018/12/06 全球购物
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
大学四年职业生涯规划书范文
2014/01/02 职场文书
大三预备党员入党思想汇报
2014/01/08 职场文书
表扬信格式
2014/01/12 职场文书
机关办公室岗位职责
2014/04/16 职场文书
合作协议书范本
2014/04/17 职场文书
军训口号
2014/06/13 职场文书
付款承诺函范文
2015/01/21 职场文书
裁员通知
2015/04/25 职场文书
初中英语教师个人工作总结2015
2015/07/21 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS