2009-12-31 45 views
2

正在开发一个完全不同的世界的手机网站?如何识别网站是否源自移动浏览器?

我该如何检测是从计算机还是从手机访问页面?

我问这个,因为我看到这样的代码如下:

if (isset($_SERVER['HTTP_ACCEPT']) && 
(strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')!==FALSE) 
&& (strpos($_SERVER['HTTP_ACCEPT'],'text ml') === FALSE 
|| 
(strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml') < 
strpos($_SERVER['HTTP_ACCEPT'],'text ml')) 

)) { //cellphone 

    readfile('index.wml'); 

} else readfile('index.htm'); 

我如何将代码移植到C#?

+0

问题标题wa因为有人看到了PHP代码,所以被编辑为不正确的('php');随时修复。 – philfreo 2009-12-31 03:51:13

+0

我编辑了标题,但只是因为OP在问题中要求提供PHP解决方案。如果这不是意图,显然可以自由回滚。 – 2009-12-31 03:52:59

+0

他希望C#soln不是PHP ..见最后一句 – 2009-12-31 03:55:13

回答

3

在php中,您通常会检查$_SERVER['HTTP_USER_AGENT']标头,以便确定Web请求源自的Web浏览器。

为移动浏览器开发网站并非完全不同的世界。但是你要记住以下限制:

  • 屏幕尺寸:不仅你的屏幕房地产是小,但大小和方向变化不同的移动设备之间的很多。

  • Flash支持:大多数手机浏览器不支持Flash。

  • JavaScript支持:JavaScript在移动浏览器上比Flash更受支持,特别是在现代移动电话和PDA中。

  • 渲染性能:在移动浏览器中渲染复杂页面需要较长的时间。一般情况下,如果您决定使用JavaScript,那么通过JavaScript处理DOM应该是最小的。

  • 移动带宽:记住要尽可能地压缩图像,并缩小所有的HTML,CSS和JavaScript。

+0

但我提供的代码不检查'$ _SERVER ['HTTP_USER_AGENT']' – user198729 2009-12-31 03:24:26

+0

是的,还有其他方法。你可能想看看这篇文章中的例子:http://mobiforge.com/developing/story/lightweight-device-detection-php – 2009-12-31 03:25:36

+0

该链接没有足够的解释... – user198729 2009-12-31 03:33:13

0

您可以解析用户代理字符串(这很容易伪造),也可以使用媒体查询来检查诸如可观察的小的最大视口大小之类的事物。

2

要检测手机并找出它的功能,您可以使用WURFL库。

0

您将要查看有关Getting Mobile: Using WML and WAP to Display Web Sites on Mobile Devices的MSDN文章。通过设计WML,手机知道使用低分辨率版本。

此页上的Detecting Mobile Devices using ASP.NET and C#向您展示了如何使用从PHP移植来的类来完成此操作。在该链路的API可以检测的iPhone,机器人会,黑莓,Symbion等

WML甲板存储平凡配置为 服务文本/ vnd.wap.wml MIME类型 在普通 web服务器上除纯HTML和 变体。由设备请求 的WML卡被桥接访问 WAP网关位于移动 设备和万维网之间, 将页面从一个传递到另一个 ,非常类似于代理。网关以 的适合移动设备接收的形式(WAP 二进制XML)将WML页面发送 。该过程从手机中隐藏起来 ,所以它可以使用URL( 示例,http://example.com/foo.wml)以与浏览器 访问HTML相同的方式访问 页面。 (提供移动电话运营商 还没有专门锁定手机 以防止用户指定 URL的访问。)

Wikipedia Source

+0

哇 - 提供一个关于如何在C#中执行此操作的直接链接,并且downvoted ..有人必须嫉妒我的回答:) – 2009-12-31 03:56:14

+0

罗伯托,这个问题可能存在一些混淆。这个问题最初是为了要求一个php解决方案而制定的,但是3次修订和22分钟后,最后一个句子与一个c#标签一起出现......即使第二个句子仍然要求php方法! – 2009-12-31 04:16:47

0

user198729是问如何做到这一点在C#
的$ PHP中的_SERVER例如$ _SERVER ['HTTP_ACCEPT']由Request.Headers在c#中执行
例如

Request.Headers["HTTP_ACCEPT"] 
相关问题