php判断终端是手机还是电脑访问网站的思路及代码


Posted in PHP onApril 24, 2013

代码一:

<?php 
function check_wap() { 
if (isset($_SERVER['HTTP_VIA'])) return true; 
if (isset($_SERVER['HTTP_X_NOKIA_CONNECTION_MODE'])) return true; 
if (isset($_SERVER['HTTP_X_UP_CALLING_LINE_ID'])) return true; 
if (strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.WAP.WML") > 0) { 
// Check whether the browser/gateway says it accepts WML. 
$br = "WML"; 
} else { 
$browser = isset($_SERVER['HTTP_USER_AGENT']) ? trim($_SERVER['HTTP_USER_AGENT']) : ''; 
if(empty($browser)) return true; 
$mobile_os_list=array('Google Wireless Transcoder','Windows CE','WindowsCE','Symbian','Android','armv6l','armv5','Mobile','CentOS','mowser','AvantGo','Opera Mobi','J2ME/MIDP','Smartphone','Go.Web','Palm','iPAQ'); 
$mobile_token_list=array('Profile/MIDP','Configuration/CLDC-','160×160','176×220','240×240','240×320','320×240','UP.Browser','UP.Link','SymbianOS','PalmOS','PocketPC','SonyEricsson','Nokia','BlackBerry','Vodafone','BenQ','Novarra-Vision','Iris','NetFront','HTC_','Xda_','SAMSUNG-SGH','Wapaka','DoCoMo','iPhone','iPod'); 
$found_mobile=checkSubstrs($mobile_os_list,$browser) || 
checkSubstrs($mobile_token_list,$browser); 
if($found_mobile) 
$br ="WML"; 
else $br = "WWW"; 
} 
if($br == "WML") { 
return true; 
} else { 
return false; 
} 
} 
function checkSubstrs($list,$str){ 
$flag = false; 
for($i=0;$i<count($list);$i++){ 
if(strpos($str,$list[$i]) > 0){ 
$flag = true; 
break; 
} 
} 
return $flag; 
} 
if(check_wap()){ 
echo "wap"; 
}else{ 
echo "web"; 
} 
?>

代码二:

<?php 
header("Content-type:text/html;charset=utf-8"); 
function is_mobile(){ 
$user_agent = $_SERVER['HTTP_USER_AGENT']; 
$mobile_agents = Array("240x320","acer","acoon","acs-","abacho","ahong","airness","alcatel","amoi","android","anywhereyougo.com","applewebkit/525","applewebkit/532","asus","audio","au-mic","avantogo","becker","benq","bilbo","bird","blackberry","blazer","bleu","cdm-","compal","coolpad","danger","dbtel","dopod","elaine","eric","etouch","fly ","fly_","fly-","go.web","goodaccess","gradiente","grundig","haier","hedy","hitachi","htc","huawei","hutchison","inno","ipad","ipaq","ipod","jbrowser","kddi","kgt","kwc","lenovo","lg ","lg2","lg3","lg4","lg5","lg7","lg8","lg9","lg-","lge-","lge9","longcos","maemo","mercator","meridian","micromax","midp","mini","mitsu","mmm","mmp","mobi","mot-","moto","nec-","netfront","newgen","nexian","nf-browser","nintendo","nitro","nokia","nook","novarra","obigo","palm","panasonic","pantech","philips","phone","pg-","playstation","pocket","pt-","qc-","qtek","rover","sagem","sama","samu","sanyo","samsung","sch-","scooter","sec-","sendo","sgh-","sharp","siemens","sie-","softbank","sony","spice","sprint","spv","symbian","tablet","talkabout","tcl-","teleca","telit","tianyu","tim-","toshiba","tsm","up.browser","utec","utstar","verykool","virgin","vk-","voda","voxtel","vx","wap","wellco","wig browser","wii","windows ce","wireless","xda","xde","zte"); 
$is_mobile = false; 
foreach ($mobile_agents as $device) { 
if (stristr($user_agent, $device)) { 
$is_mobile = true; 
break; 
} 
} 
return $is_mobile; 
} 
if(is_mobile()){ 
echo "手机"; 
}else{ 
echo "电脑"; 
}
PHP 相关文章推荐
php设计模式 Prototype (原型模式)代码
Jun 26 PHP
PHP开发者常犯的10个MySQL错误更正剖析
Jan 30 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
php编写的简单页面跳转功能实现代码
Nov 27 PHP
用PHP和Shell写Hadoop的MapReduce程序
Apr 15 PHP
使用配置类定义Codeigniter全局变量
Jun 12 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
Aug 01 PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
May 24 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
Apr 23 #PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
Apr 23 #PHP
『PHP』PHP截断函数mb_substr()使用介绍
Apr 22 #PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
Apr 22 #PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
Apr 22 #PHP
基于PHP Web开发MVC框架的Smarty使用说明
Apr 19 #PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 #PHP
You might like
各种咖啡的英文名子是什么
2021/03/03 新手入门
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
vue插件tab选项卡使用小结
2016/10/27 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
在Django的视图(View)外使用Session的方法
2015/07/23 Python
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
python魔法方法-自定义序列详解
2016/07/21 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
详解django三种文件下载方式
2018/04/06 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
dpn网络的pytorch实现方式
2020/01/14 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
最常使用的求职信
2014/05/25 职场文书
先进班组材料范文
2014/12/25 职场文书
讲座通知范文
2015/04/23 职场文书
食品药品安全责任书
2015/05/11 职场文书
小孩不笨观后感
2015/06/03 职场文书
2015团员个人年度总结
2015/11/24 职场文书
vue实现锚点定位功能
2021/06/29 Vue.js
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫
python pygame 开发五子棋双人对弈
2022/05/02 Python