各种程序的WAP方式访问web页面跳转至手机版方法,收集了很久,有更好的方法将不断保持更新,您如果有有效的方法也请转告八桂网讯。
方法一:适应于PHP程序
WAP方式访问web页面跳转至手机版方法 check_wap.php文件内容:
<?php
/**
*判断是否是通过手机访问
*/
function isMobile() {
// 如果有HTTP_X_WAP_PROFILE则一定是移动设备
if (isset ($_SERVER[’HTTP_X_WAP_PROFILE’])) {
return true;
}
//如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
if (isset ($_SERVER[’HTTP_VIA’])) {
//找不到为flase,否则为true
return stristr($_SERVER[’HTTP_VIA’], "wap") ? true : false;
}
//判断手机发送的客户端标志,兼容性有待提高
if (isset ($_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’,
’openwave’,
’nexusone’,
’cldc’,
’midp’,
’wap’,
’mobile’
);
// 从HTTP_USER_AGENT中查找手机浏览器的关键字
if (preg_match("/(" . implode(’|’, $clientkeywords) . ")/i", strtolower($_SERVER[’HTTP_USER_AGENT’]))) {
return true;
}
}
//协议法,因为有可能不准确,放到最后判断
if (isset ($_SERVER[’HTTP_ACCEPT’])) {
// 如果只支持wml并且不支持html那一定是移动设备
// 如果支持wml和html但是wml在html之前则是移动设备
if ((strpos($_SERVER[’HTTP_ACCEPT’], ’vnd.wap.wml’) !== false) && (strpos($_SERVER[’HTTP_ACCEPT’], ’text/html’) === false || (strpos($_SERVER[’HTTP_ACCEPT’], ’vnd.wap.wml’) < strpos($_SERVER[’HTTP_ACCEPT’], ’text/html’)))) {
return true;
}
}
return false;
}
//跳转js
$js =
<<<EOT
var pgo=0;
function JumpUrl(){ if(pgo==0){ location=’http://www.cmsjoy.com’; pgo=1; } }
setTimeout(’JumpUrl()’,3000);
EOT;
//如果检测为wap访问,则跳转
if(isMobile())
{
echo $js;
}else{
echo "0";
}
?>
在html页面引入
<script type="text/javascript" src="check_wap.php" ></script><!--wap跳转JS-->
方法二:适应于asp程序开发的语言。
程序代码
<%
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
%>
方法三:JS判断并跳转。
<script type="text/JavaScript">
var mobileAgents = [’Windows CE’,’iPod’,’Symbian’,’iPhone’,’BlackBerry’,’Android’,’htc’,’ucweb’,’wap’,’mobile’,’UCWEB’,’HTC’,’WAP2.0’];
var sUserAgent = navigator.userAgent;
for(var i = 0;i<mobileAgents.length;i++)
{
if(sUserAgent.indexOf(mobileAgents)>-1)
{
location = ’http://www.beike.cc/m/index.html’;
break;
}
}
</script>
方法四:ASP.NET跳转方法
最终采用了通过获得http头信息的方法来判断,此方法可靠性最高.详细代码如下:
asp.net [code]
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");
另外一种写法:
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);