web请求判断客户端类型
2015-07-30 22:27
295 查看
user_agent是Http协议中的一部分属于头域的组成部分。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;例如用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的UA来判断的。UA可以进行伪装。
user_agent在http头中:
/*HTTP请求头:*/
POST/sample.jspHTTP/1.1
Accept:image/gif.image/jpeg,*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate
username=jinqiao&password=1234
/*END*/
user_agent的获取:
PHP:
JS:
服务器端判断:
JS 方法
user_agent在http头中:
/*HTTP请求头:*/
POST/sample.jspHTTP/1.1
Accept:image/gif.image/jpeg,*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate
username=jinqiao&password=1234
/*END*/
user_agent的获取:
PHP:
$_SERVER['HTTP_USER_AGENT']
JS:
navigator.userAgent
服务器端判断:
/** * 判断是否是通过手机访问 * @return bool 是否是移动设备 */ public function isMobile() { //判断手机发送的客户端标志 if(isset($_SERVER['HTTP_USER_AGENT'])) { $userAgent = strtolower($_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', 'opera mobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile' ); // 从HTTP_USER_AGENT中查找手机浏览器的关键字 if(preg_match("/(".implode('|',$clientkeywords).")/i",$userAgent)&&strpos($userAgent,'ipad') === false) { return true; } } return false; }
JS 方法
function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"); var flag = true; for (var v = 0; v < Agents.length; v++) { if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; } } return flag; }
相关文章推荐
- hibernate与spring整合所遇到的问题
- jquery mobile常用的data-role类型介绍
- [HDU 1026] Ignatius and the Princess I BFS
- SQLSERVER还原数据库失败:错误: 3154
- 关于c# lambda的一些认知
- Kill XXX.py by python and psutil
- C++ 操作符赋值重载
- C语言VS编译环境中的resource file and source file的区别
- HTML5、php、python优缺点都是什么?
- Hibernate学习之使用实例
- 黑马程序员——java学习8(166-179)——集合,Collection,List
- 2015 Multi-University Training Contest 4 (hdu5338 ZZX and Permutations)线段树(好)
- spoj 1043 Can you answer these queries I(线段树)
- Ultra-QuickSort
- Android开发之两种方式实现连续点击两次返回键退出程序
- android 定时器的使用
- Perl为数组排序
- js如何判断一个对象是不是Array?
- MRC模式下生成的类对象自动使用 autorelease
- C语言实现双向链表删除节点、插入节点、双向输出等操作