文档章节

PHP CodeBase: 判断用户是否手机访问

ywppengpeng
 ywppengpeng
发布于 2016/11/22 10:27
字数 482
阅读 9
收藏 0
点赞 0
评论 0

随着移动设备的普及,网站也会迎来越来越多移动设备的访问。用适应PC的页面,很多时候对手机用户不友好,那么有些时候,我们需要判断用户是否用手机访问,如果是手机的话,就跳转到指定的手机友好页面。这里就介绍一下,如何判断用户是否用手机访问。

自定义的函数如下:

$agent = check_wap();
if( $agent )
{
	header('Location: http://www.nowamagic.net');
	exit;
}

// check if wap 
function check_wap(){
	// 先检查是否为wap代理,准确度高
	if(stristr($_SERVER['HTTP_VIA'],"wap")){
		return true;
	}
	// 检查浏览器是否接受 WML.
	elseif(strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.WAP.WML") > 0){
		return true;
   }
   //检查USER_AGENT
   elseif(preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])){
		return true;		 	
	}
	else{
		return false;	
   }
}

再来一个从PHP框架剥离的判断是否为手机移动终端的函数:

function is_mobile_request()   
{   
  $_SERVER['ALL_HTTP'] = isset($_SERVER['ALL_HTTP']) ? $_SERVER['ALL_HTTP'] : '';   
  $mobile_browser = '0';   
  if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|iphone|ipad|ipod|android|xoom)/i', strtolower($_SERVER['HTTP_USER_AGENT'])))   
	$mobile_browser++;   
  if((isset($_SERVER['HTTP_ACCEPT'])) and (strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') !== false))   
	$mobile_browser++;   
  if(isset($_SERVER['HTTP_X_WAP_PROFILE']))   
	$mobile_browser++;   
  if(isset($_SERVER['HTTP_PROFILE']))   
	$mobile_browser++;   
  $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));   
  $mobile_agents = array(   
		'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',   
		'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',   
		'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',   
		'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',   
		'newt','noki','oper','palm','pana','pant','phil','play','port','prox',   
		'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',   
		'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',   
		'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',   
		'wapr','webc','winw','winw','xda','xda-'  
		);   
  if(in_array($mobile_ua, $mobile_agents))   
	$mobile_browser++;   
  if(strpos(strtolower($_SERVER['ALL_HTTP']), 'operamini') !== false)   
	$mobile_browser++;   
  // Pre-final check to reset everything if the user is on Windows   
  if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows') !== false)   
	$mobile_browser=0;   
  // But WP7 is also Windows, with a slightly different characteristic   
  if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows phone') !== false)   
	$mobile_browser++;   
  if($mobile_browser>0)   
	return true;   
  else 
	return false;   
}

 

© 著作权归作者所有

共有 人打赏支持
ywppengpeng
粉丝 5
博文 62
码字总数 31743
作品 0
西安
程序员
如何判断是手机还是电脑在访问网站

如何判断是手机还是电脑在访问网站? 网上现在有三种观点, 一种是基于浏览器发送的 User-Agent, 但明显这种方法是行不通的, 虽然有人列出了大多数的手机发送的User-Agent, 但依然会有很多手机...

Sobey ⋅ 2013/10/11 ⋅ 3

会员系统 是否需要 前端+后端双重验证?

比如我要做个注册 用户名/手机号/email 都可以注册 那么我前端JS先判断 属于哪个类别,然后在验证是否是正常的输入,然后提交给后端PHP ,PHP是否还要再验证一次 哪个类别,属于这个类别后是...

kacc850 ⋅ 2015/09/09 ⋅ 6

实验——实现基于LNMP的电子商务平台架构

一、 环境准备: centos系统、nginx源码、 yum源(安装mysql与php-fpm) 二、 安装步骤: 1、先确定一下防火墙都清空了 2、安装nginx(推荐源码编译安装) 3、yum方式安装mariadb、mariadb-s...

Ty_endless ⋅ 2017/11/04 ⋅ 0

PHP cURL工具的简单介绍

cURL通常是指使用URL语法进行数据传递的命令行工具和库,本文所介绍的是其PHP拓展最基本的使用。 cURL主要用来进行数据抓取,当然,还有更多强大的功能,一些复杂的操作,例如处理Cookie、表...

madbooker ⋅ 2014/10/18 ⋅ 0

通过User Agent判断微信内置浏览器

原标题:如何判断微信内置浏览器 备注:基于网络上内容所有修改 在进行微信公众账号开发的时候,其中很大一块是微站点的开发,有时候我们需要知道当前的浏览器是微信内置的浏览器,从而做一些...

lixiaokai2008 ⋅ 2014/03/04 ⋅ 2

Thinkphp框架搭建手机网站视频教程

我赢职场全球经典Thinkphp框架搭建网站功能,用户登录后,如何在前台显示相应的用户名 连接地址:http://dwz.cn/z9NBy [摘要] 代码中的函数 ismobile来源于网上,写得挺好的。入口文件通过判...

马洪伟 ⋅ 2014/12/25 ⋅ 0

PHP判断是手机还是微信还是PC访问

开发活动的时候,有些需求是要求PC和移动分开的,也就是不是做响应式的,但是呢,有些同事前端技术不怎么行,就被迫转移到后端来做一些判断浏览器了,现在就在这里贴出PHP校验是否是手机端、...

冷三叔 ⋅ 04/23 ⋅ 0

PHP判断手机是IOS还是Android

本文介绍了PHP判断手机是IOS还是Android的三个小实例,要判断用户的手机是安卓的还是ios的,搜了一下相关的资料,最终获得的结果分享给大家。 实例1:主要是要用到HTTPUSERAGENT,它表示的意...

bengozhong ⋅ 2016/09/21 ⋅ 0

php如何判断用户是用手机登陆网站还是PC端登陆

php如何判断用户是用手机登陆网站还是PC端登陆,比如如果是手机登陆网站的,我们给它跳转到手机站域名上面。 如果是手机登陆 当我们访问www.oschina.net 我们给他返回3g.oschina.net 这个怎么...

赵立成 ⋅ 2014/05/20 ⋅ 10

10步搞定微信支付的扫码支付

先要有微信公众号,从公众号左侧菜单进入微信支付,要先申请微信支付,申请通过之后,即可使用,涉及到2个后台:公众号后台和支付平台后台 首先要得到AppID(应用ID)和AppSecret(应用密钥),获...

爬墙 ⋅ 2016/01/23 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

关于“幂等”操作

一个幂等(idempotent)操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同. 开发中, 我们经常考虑幂等操作的场景有“接口调用”、“MQ消费”、“自动任务”等 接口调用, 可能出现...

零二一七 ⋅ 23分钟前 ⋅ 0

Dubbo服务服务暴露之ProxyFactory Invoker

Dubbo服务暴露过程中有涉及到调用ProxyFactory 中方法获取Invoker对象的过程,现在我们来深究下源码,来看下这个过程是在做些什么,返回的Invoker 对象是什么,我们来看一下代码的切入点: ...

哲别0 ⋅ 38分钟前 ⋅ 0

GP两种连接方式性能测试

GP两种连接方式性能测试 Pivotal import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class GPQueryStrin......

仔仔1993 ⋅ 42分钟前 ⋅ 0

jsonrpc-4j代码解析

解析文件 AutoJsonRpcServiceImplExporter JsonServiceExporter AutoJsonRpcServiceImplExporter 路径:com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImplExporter AutoJsonRpcServi......

郭恩洲_OSC博客 ⋅ 今天 ⋅ 0

百度搜索

from selenium import webdriver import time brower=webdriver.Firefox() brower.get('http://www.baidu.com') input=brower.find_element_by_id('kw') input.send_keys('中南大学') time.s......

南桥北木 ⋅ 今天 ⋅ 0

tomcat 日志记录器

1、日志记录器是记录消息的组件 日志记录器需要与某个servlet 容器相关联 2、Logger 接口 共定义了5种日志级别:FATAL、ERROR、WARNING、INFORMATION、DEBUGGER setVerbosity 设置级别 setC...

职业搬砖20年 ⋅ 今天 ⋅ 0

Thrift RPC实战(三) Thrift序列化机制

1.Thrift基础架构 Thrift是一个客户端和服务端的架构体系,数据通过socket传输; 具有自己内部定义的传输协议规范(TProtocol)和传输数据标准(TTransports); 通过IDL脚本对传输数据的数据结构...

lemonLove ⋅ 今天 ⋅ 0

网站建设就要像2018世界杯的俄罗斯队大杀四方[图]

今天心情不错,因为昨天晚上观看了世界杯比赛,尤其是对俄罗斯队的大杀四方感到十分霸气侧漏啊,因此我联想到了自己的博客网站,我的博客是去年年底上线的,一直想建设一个关于读书和读后感作...

原创小博客 ⋅ 今天 ⋅ 0

linux 信号机制

signal(SIGPIPE, SIG_IGN); TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端只是收到FIN包. 按照TCP协...

xxdd ⋅ 今天 ⋅ 0

my.cnf, my-small.cnf, my-medium.cnf, my-large.cnf

1. my-small.cnf # Example MySQL config file for small systems.## This is for a system with little memory (<= 64M) where MySQL is only used# from time to time and it's importa......

周云台 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部