2009-12-31 94 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"] 
相關問題