陋室博客在之前使用过判断操作系统函数,通过该函数实现判断客户端是否是手机来调用相应的手机版本网页文件。今天来具体分析一下这个函数的使用。
要用PHP判断客户端操作系统,我们首先要知道什么函数能实现这一功能。
在PHP系统函数中,提供了$_SERVER["HTTP_USER_AGENT"]函数,能实现这一功能,该函数实际上是浏览器标识符的一个返回值,其中包含了客户端操作系统的版本。我们可以利用该版本来判断客户端使用的是什么操作系统。
接下来我们看如何在实际操作中使用它,先来看一下该函数能输出什么:
<?php
echo $_SERVER["HTTP_USER_AGENT"];
?>
用谷歌浏览器端返回出的值为:
Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1
用iPhone访问浏览器返回值为:
Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16
谷歌蜘蛛爬行返回值为:
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
我们发现实际上客户端的操作系统,能在该函数中体现出来。那么接下来要做的就是判断语句了:
在这里我们用到了php的一个判断函数strpos() 函数,下面是php手册里的讲解:
strpos() 函数返回字符串在另一个字符串中第一次出现的位置。
如果没有找到该字符串,则返回 false。
strpos(string,find,start)
参数 描述
string 必需。规定被搜索的字符串。
find 必需。规定要查找的字符。
start 可选。规定开始搜索的位置。
注释:该函数对大小写敏感。如需进行对大小写不敏感的搜索,请使用 stripos() 函数。
实例:
<?php
//判断是否是Windows操作系统,条件符合加载谷歌的ajax
if(strpos($_SERVER["HTTP_USER_AGENT"],"Windows"))
echo <<<JS
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
JS;
?>
<?php
//php判断客户端是否为手机,条件符合跳转到http://malu.me/
$agent = $_SERVER['HTTP_USER_AGENT'];
if(strpos($agent,"NetFront") || strpos($agent,"iPhone") || strpos($agent,"MIDP-2.0") || strpos($agent,"Opera Mini") || strpos($agent,"UCWEB") || strpos($agent,"Android") || strpos($agent,"Windows CE") || strpos($agent,"SymbianOS"))
header("Location:http://malu.me/");
?>
以上实例可直接使用,但判断手机客户端还不够完善,因为现在智能机市场占用率很高,很多手机系统接近于我们的电脑,在判断上增加了难度,不过可以协助使用ip地址段的方法来判断客户端,这样的操作在要求比较高的站点上使用。