C# 如何识别网站是否源于移动浏览器?

C# 如何识别网站是否源于移动浏览器?,c#,mobile,mobile-phones,wml,C#,Mobile,Mobile Phones,Wml,开发手机网站是一个完全不同的世界吗 我如何检测一个页面是通过电脑还是手机访问的 我这样问是因为我看到如下代码: if (isset($_SERVER['HTTP_ACCEPT']) && (strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')!==FALSE) && (strpos($_SERVER['HTTP_ACCEPT'],'text ml') === FALSE || (strpos($_SERVER['HTTP_A

开发手机网站是一个完全不同的世界吗

我如何检测一个页面是通过电脑还是手机访问的

我这样问是因为我看到如下代码:

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');
if(isset($\u服务器['HTTP\u ACCEPT']))&&
(strpos($_SERVER['HTTP\u ACCEPT'],'vnd.wap.wml')!==FALSE)
&&(strpos($_SERVER['HTTP\u ACCEPT'],'text ml')==FALSE
||
(strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml'))<
strpos($_服务器['HTTP\u ACCEPT'],'text ml'))
)){//手机
readfile('index.wml');
}else readfile('index.htm');

如何将代码导入C#?

在php中,您通常会检查
$\u服务器['HTTP\u USER\u AGENT']
标题,以识别web请求的来源web浏览器

为移动浏览器开发网站并不是一个完全不同的世界。但是,您必须记住以下限制:

  • 屏幕大小:不仅你的屏幕面积更小,而且不同移动设备的大小和方向也有很大差异

  • Flash支持:大多数移动浏览器不支持Flash

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

  • 渲染性能:在移动浏览器中渲染复杂页面需要更长的时间。一般来说,若您决定使用JavaScript,那个么通过JavaScript对DOM的操作应该是最小的

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


您可以解析用户代理字符串(这很容易伪造),也可以使用媒体查询来检查最大视口大小是否小得离谱。

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

您将想看看这篇MSDN文章。通过设计WML,手机知道如何使用低分辨率版本

本页向您展示了如何使用从PHP移植的类。该链接中的API可以检测iPhone、Android、黑莓、Symbion等

WML甲板储存在普通甲板上 web服务器通常配置为 提供text/vnd.wap.wml MIME类型 除了简单的HTML和 变体。WML卡在收到请求时 通过设备,通过网桥访问 WAP网关,位于手机和网络之间 设备和万维网, 将页面从一个页面传递到另一个页面 很像代理。门户发送 WML页面以适当的形式显示在上 用于移动设备接收(WAP 二进制(XML)。这个过程是隐藏的 从手机,因此它可以访问 以与浏览器相同的方式创建页面 使用URL访问HTML(用于 例如,)。 (由移动电话运营商提供) 没有明确锁定手机 阻止用户访问指定的 网址。)


用户198729询问如何在C#
PHP中的$_服务器,例如$_服务器['HTTP_ACCEPT']是由c#
中的Request.Headers执行的,例如

Request.Headers["HTTP_ACCEPT"]

但是我提供的代码没有检查
$\u SERVER['HTTP\u USER\u AGENT']
是的,还有其他方法。您可能希望查看本文中的示例:该文章中的代码非常简单。它检查来自移动设备的所有已知HTTP头。然后代码段以
if($mobile\u browser>0){}else{}
结尾。如果
$mobile\u browser
大于0,则您的请求来自移动设备。它们处理
$\u服务器['HTTP\u ACCEPT']
的方式不同。我上面的代码是否有误?没有错,但可能会检测到所有移动电话浏览器。由于有人看到php代码,您的问题标题被编辑为不正确('php');请随意修改。我编辑了标题,但只是因为OP在问题中要求PHP解决方案。显然,如果不是出于这个目的,请随意回滚。他想要的是C#soln而不是PHP。。请看最后一句话对不起。现在,我想知道这一困惑:我正在检查问题的版本历史,最后一句话是在第三次修订后才添加的。在PHP出现之前,标签和问题中都有。22分钟后,C#的东西出现了:)哇-提供一个关于如何在C#中做到这一点的直接链接,并被否决。。一定有人嫉妒我的回答:)罗伯托,这个问题可能有些困惑。这个问题最初是为了请求一个php解决方案而提出的,但经过3次修改,22分钟后,最后一句话出现在c#标记旁边。。。尽管第二句话仍然要求使用php方法!