您的位置:首页 > 运维架构 > 网站架构

如何区分是手机访问网站,还是PC访问网站?

2012-02-08 21:28 323 查看
 ASP判断ip是否手机访问网站

=====================================

程序代码

<%

if InStr(LCase(Request.ServerVariables("HTTP_ACCEPT")),"text/vnd.wap.wml")>0 then

response.redirect  "wap.asp" '如果是手机访问则跳转到wap.asp

response.end

else

response.redirect  "default.asp" '如果电脑访问跳转到首页

response.end

end if

%>

我自己是在default.asp

添加

复制内容到剪贴板 程序代码

<%

if InStr(LCase(Request.ServerVariables("HTTP_ACCEPT")),"text/vnd.wap.wml")>0 then

response.redirect  "wap.asp"

response.end

end if

%>

这样只要输入www.51weidi.com就可以自动判断是否是手机访问。而跳转到对应页面了。。

==================================

PHP判断用户是否用手机访问网站

老九是一个忠实的手机党,经常用手机上网,也用手机访问过我的博客,不过我的博客没有开发过wap版的,大概老九的手机浏览器比较先进吧,我用我的手机访问时总是提示页面太大(三年前买的手机,估计过时了吧)。

  我一直在想,PHP应该能判断用户是否用手机访问网站吧,记得早些年,在QQ空间的留言板上还出现了该留言来自于手机的提示呢,虽然QQ空间不是用PHP开发的。于是,今天来网络上搜索了一番。找到了一个貌似还可以的方法。参考地址:
php如何判断用户通过手机wap访问还是电脑直接访问

  手机需通过代理服务器来访问网站,http头信息里一般会包含一个VIA的信息,不太懂具体是什么含义,大概都是通信用的。于是我建了一个脚本测试下,<?php echo $_SERVER['HTTP_VIA'] ?>,用火狐,IE打开什么也没有。上传到网上,用我的手机访问了一下,有如下信息:HTTP/1.1 ZJHZ-PS-WAP3-GW305(infox-WISG, Huawei Technologies)。那就按照参考文章的说法,如果获取到了HTTP头信息中的VIA并且含WAP,说明是手机访问。当然对那些头信息里没有发送VIA的手机就无效了

  这样就写了一个函数来封装一下,以方便使用。代码如下:

/*
 * 功能:               判断是否是手机访问
 * 参数:               无
 * 返回值:             返回1为是手机访问,返回0时为不是
 */

function is_wap() {
    $http_via = isset($_SERVER['HTTP_VIA']) ? strtolower($_SERVER['HTTP_VIA']) : '';
    return !empty($http_via) && strstr($http_via, 'wap') ? 1 : 0;      

}
  题外话:近几日,夜里睡觉时一直对着电扇吹,一天早上起来觉得上肢肌肉酸痛,感觉手足心发热,打了三次点滴,吃了五种药体温才恢复正常,又一次理解了身体可是革命的根本呀。在此,也提醒各位童鞋要多多注意身体了。

===================

JS如何判断来访问网站的用户是手机用户还是Web浏览器的用户

使用JS架框有现成的判断
例如motools架框中:
Browser.Platform.mac - (boolean) 当前操作系统是否为Mac
Browser.Platform.win - (boolean) 当前操作系统是否为Windows
Browser.Platform.linux - (boolean) 当前操作系统是否为Linux
Browser.Platform.ipod - (boolean) 当前操作系统是否为iPod Touch / iPhone
Browser.Platform.other - (boolean) 当前操作系统即不是Mac, 也不是Windows或Linux
Browser.Platform.name - (string) 当前操作系统的名称

 

 

这个只能通过客户端传递的User-agent来判断
比如正常pc是:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1;)

常用手机的UserAgent你可以去网上找找,或者自己连手机测试,
比如Nokia5320的是:Nokia 5320/UCWEB7.0.1.34/28/999
HTC的安卓手机:Mozilla/5.0 (Linux; U; Android 2.2; zh-cn; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1;

iPhone的:Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; zh-cn) AppleWebKit/528.18 (KHTML, like Gecko) Mobile/7D11
 
 
asp.net 或JSP 判断是手机还是电脑访问网站的可靠方法
做了WAP网站,用到判断用户来自PC还是手机,想了很多方法,如判断IP,判断分辨率等,但经过试验,都不太可靠,最终采用了通过获得http头信息的方法来判断,此方法可靠性最高.详细代码如下:
asp.net

if (Request.Headers["user-agent"] != null && Request.Headers["user-agent"].ToLower().ToString().IndexOf("mozilla") != -1)
            Response.Redirect("www/index.aspx");
        else
            Response.Redirect("wap/index.aspx");
JSP [code]

if(request.getheader("user-agent")!=null&&(request.getheader("user-agent").tolowercase().indexof("mozilla")!=-1))
{
strfinishurl = "/web/index.jsp";
}else
{
strfinishurl = "/wap/index.jsp";
}

 

 

asp.net(C#) 中用以下代码

using System.Text.RegularExpressions;//头部引入正则的命名空间

//为了加强准确性,防止支持wap的浏览器如opera,加入操作系统验证。openwave|后为pc操作系统

string osPat = "mozilla|m3gate|winwap|openwave|Windows NT|Windows 3.1|95|Blackcomb|98|ME|X Window|Longhorn|ubuntu|AIX|Linux|AmigaOS|BEOS|HP-UX|OpenBSD|FreeBSD|NetBSD|OS/2|OSF1|SUN";

string uAgent = Request.ServerVariables["HTTP_USER_AGENT"];

Regex reg = new Regex(osPat);

if (reg.IsMatch(uAgent))

{

Response.Write("电脑访问");

}

else

{

Response.Write("手机访问");

}

Response.Write("<br/>" + uAgent);

_________________________________________________________________________________

PHP中用以下代码:

$uAgent = $_SERVER['HTTP_USER_AGENT'];

$osPat  = "mozilla|m3gate|winwap|openwave|Windows NT|Windows 3.1|95|Blackcomb|98|ME|X Window|ubuntu|Longhorn|AIX|Linux|AmigaOS|BEOS|HP-UX|OpenBSD|FreeBSD|NetBSD|OS\/2|OSF1|SUN";

if(preg_match("/($osPat)/i",  $uAgent )) //winwap 模拟WAP手机上网的一个浏览器; openwave|后面为各pc操作系统

{

echo "电脑访问";

}

else

{

echo "手机访问";

}

echo '<br/>'.$uAgent;

_________________________________________________________________________________

javascript中采用navigator.userAgent 来获取,但非智能机似乎不支持js。

 

[code]
 


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: