Tairan's Story

「知之真切笃实处即是行,行之明觉精察处即是知,知行工夫不可离。」


如何识别手机浏览器信息

想作一个网站,根据不同的访问者提供不同的显示模板,如适合手机的模板,适合PC浏览器的模板。

从哪里识别访问者的信息,以及如何识别呢?

依据 HTTP 协议,客户端浏览网页的时候会提供一些信息给服务器端。下面是PC浏览器访问时的 $_SERVER 的 dump 信息。

(array) Array
(
    [ALL_HTTP] => HTTP_CACHE_CONTROL:max-age=0
HTTP_CONNECTION:keep-alive
HTTP_CONTENT_LENGTH:0
HTTP_ACCEPT:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
HTTP_ACCEPT_CHARSET:ISO-8859-1,utf-8;q=0.7,*;q=0.3
HTTP_ACCEPT_ENCODING:gzip,deflate,sdch
HTTP_ACCEPT_LANGUAGE:en-US,en;q=0.8
HTTP_COOKIE:__utmz=259664206.1262318873.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=51xna; __utma=259664206.724256099.1262318873.1262318873.1262318873.1
HTTP_HOST:www.51xna.com
HTTP_USER_AGENT:Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.9 Safari/533.2
 
    [HTTPS] => off
    [SCRIPT_NAME] => /private/Kohana/index.php
    [HTTP_COOKIE] => __utmz=259664206.1262318873.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=51xna; __utma=259664206.724256099.1262318873.1262318873.1262318873.1
    [AUTH_PASSWORD] => 
    [AUTH_TYPE] => 
    [AUTH_USER] => 
    [CONTENT_LENGTH] => 0
    [CONTENT_TYPE] => 
    [PATH_TRANSLATED] => g:\wwwroot\51xna.com\wwwroot\mobile\index
    [QUERY_STRING] => 
    [REMOTE_ADDR] => 221.227.130.23
    [REMOTE_HOST] => 221.227.130.23
    [REMOTE_USER] => 
    [REQUEST_METHOD] => GET
    [SERVER_NAME] => www.51xna.com
    [SERVER_PORT] => 80
    [SERVER_PROTOCOL] => HTTP/1.1
    [SERVER_SOFTWARE] => Microsoft-IIS/6.0
    [APPL_MD_PATH] => /LM/w3svc/798/ROOT
    [APPL_PHYSICAL_PATH] => g:\wwwroot\51xna.com\wwwroot\
    [INSTANCE_ID] => 798
    [INSTANCE_META_PATH] => /LM/W3SVC/798
    [LOGON_USER] => 
    [REQUEST_URI] => /private/Kohana/index.php/mobile/index
    [URL] => /private/Kohana/index.php/mobile/index
    [SCRIPT_FILENAME] => g:\wwwroot\51xna.com\wwwroot\private\Kohana\index.php
    [ORIG_PATH_INFO] => /private/Kohana/index.php/mobile/index
    [PATH_INFO] => /mobile/index
    [ORIG_PATH_TRANSLATED] => g:\wwwroot\51xna.com\wwwroot\private\Kohana\index.php\mobile\index
    [DOCUMENT_ROOT] => g:\wwwroot\51xna.com\wwwroot
    [PHP_SELF] => /private/Kohana/index.php
    [HTTP_CACHE_CONTROL] => max-age=0
    [HTTP_CONNECTION] => keep-alive
    [HTTP_CONTENT_LENGTH] => 0
    [HTTP_ACCEPT] => application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
    [HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.3
    [HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch
    [HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8
    [HTTP_HOST] => www.51xna.com
    [HTTP_USER_AGENT] => Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.9 Safari/533.2
    [REQUEST_TIME] => 1271408243
    [argv] => Array
        (
        )
 
    [argc] => 0
)

通常我们可以在HTTP_USER_AGENT中找到识别信息,其中PC浏览器的HTTP_USER_AGENT信息最全,很容易根据关键字来识别如’Chrome’, ‘Firefox’ 等,部分手机浏览器也可以可以通过 ‘Windows Mobile’, ‘Windows Phone’, ‘SymbianOS’, ‘Nokia’, ‘Opera Mobi’, ‘Android’等关键字识别,这里有一个手机HTTP_USER_AGENT识别列表http://www.zytrax.com/tech/web/mobile_ids.html。但是有些手机上的浏览器并不提供HTTP_USER_AGENT信息。

如今的智能手机大多都支持 XHTML 格式浏览,我们可以通过 HTTP_ACCEPT 来识别手机是否支持 XHTML 格式浏览。这里识别的关键字主要是 ‘application/xhtml+xml’。

另外还有一种识别方式,通过查找用户的上网方式,通常手机用户走的是 GPRS 路线,但是这中识别方式并不可靠,可以作为一种辅助识别手段。

对于只支持 WML 的手机目前我还没有解决,一些非智能手机在访问网站时会提示”不支持所访问的网站”。开始我以为是返回信息的问题,当我把返回信息严格按照WML格式输出时问题依然存在。不知道这种手机是通过什么方式访问互联网的。

为所有用户提供不同的定制服务是一件不可能的完成任务,支持大多数就好。完美主义总是很浪费时间。

最后感谢各位提供手机访问信息的童鞋们,让你们忍受在手机上输入如此之长的URL,实在辛苦!

1 Comment » | Tags:,, | Categories: Technology, 实践手札, 我的声音
博客改版记

我一直想拥有一个简洁的博客主题,因为我始终坚信简单就是美。在更换这个主题之前使用的是从WordPress下载的whitebox主题,选用WhiteBox主题的主要原因也是在于它的简单,虽然离我的要求还有点距离,不过也算是不错的了。

作为一个在互联网上公开的博客,主要目的就是写自己想说的话给别人看,当然有时仅仅是为了给自己看。无论如何,”看”,是博客对外的主要功能(对内的功能是写)。那么主题样式首先就应该为这个“看”所服务。让看客更方便、更舒服的去关注内容,而不是用脸上那一层厚厚的遮羞粉来刺激看客的视觉神经。

从WordPress的网站上没找到一个比WhiteBox更符合要求的主题了,既然没有现成的,那就自己动手做,合适的东西总是定制的。

在构思了几个草图之后就开始动手了,因为没有美工方面的技能无法从自上而下的实现构思,于是自下而上的用记事本来一转一瓦的堆切成了我的选择。自下而上的推进实在痛苦,在痛苦的间隙我在w3c的网站上找到了理想的样式。http://www.w3.org/html/

主题的样式找到了,可是这也不能直接就用。在对照着其他主题的源码,开始了自己开发WordPress主题之路。

WordPress主题的开发还是比较容易的,去实现几个特定的文件就可以有自己的主题了。

经过一天多的学习+修补,总算可以投入使用了。做软件产品是一个渐进的过程,第一版上线之后还是有很大的改进空间以及也会有不少隐藏角落的Bug。随着时间的推进,慢慢的来优化这个主题吧。

在测试新样式的时候,IE浏览器总是给你刺激,明明按照标准来写的代码到了IE这里却变了样。一个网友说IE的容错性最好,一想到这个我就对着垃圾桶吐了口浓痰。

IE在容错方面的表现其实是用自己的财力制造壁垒,当大家都遵守标准开发的时候,IE没有什么优势。但是互联网的网站并不都是遵守标准开发的,有些人图省事自作聪明的把代码写的像狗屎一样,而且这样的人还不少。于是IE给这些写狗屎代码的人擦屁股,借此博得他们的好感,毕竟让他们可以更懒,更不负责人的写代码。此时MS的财力优势显示出来了,他可以雇佣大量的测试人员来发现不符合标准的写法,然后在现有的基础上强行的去兼容。就这样,大家看到了今天的IE,已经肥的拽不动了,而且还不好重写。

鉴于IE如此低劣的表现,以及垄断的事实,本博客也就勉强的兼容它了。博客主题的样式以Firefox和Chrome测试为主,除非有什么明显的IE上的失常表现,我才去修理它。所以这里推荐你使用Firefox 或者 Chrome 来浏览本博客。

声明:除了得到使用时的快感以外,本人没有得到任何其他来自Firefox或者Chrome的好处。

1 Comment » | Tags:,,,, | Categories: Technology, Thinking, 我的声音


我的豆瓣

二维码快速链接
QR Code fuer diese Seite