2013-04-25 57 views
5

許多移動設備(如我的android手機)都有'請求桌面站點'選項。我正在構建移動網站,並希望使本地功能發揮作用。在移動設備上請求桌面站點選項

作爲開發者,我們的最終目標是什麼?是否有一個GET請求,例如:leave_mobile = 1或者是設備本身是否更改用戶代理來欺騙應用程序,將其視爲另一個桌面?

+2

大多數情況下,設備將更改用戶代理 – 2013-04-25 15:28:33

回答

6

我已經在我的android設備上做了一些測試,並讀出了用戶代理並且看起來好像在改變。所以我做這個本地選項的工作是將初始用戶代理捕獲到一個會話中,並在每個頁面請求中將其與正在發送的代理進行比較。 如果用戶代理不相同,請重新驗證它是否爲移動設備,如果爲true,則用新代理覆蓋會話用戶代理。但是,如果新的驗證失敗,它可能希望找到桌面版本,因此發送新的標題重定向。

$DesktopSite = 'www.example.com'; 
$UserAgent = $_SERVER['HTTP_USER_AGENT']; 

if (!isset($_SESSION['use_mobile'])){ 
    $_SESSION['use_mobile'] = 1; 
    $_SESSION['user_agent'] = $UserAgent; 
} else if ($_SESSION['user_agent'] != $UserAgent){ // Check if user-agent has changed 
    if(!preg_match(/*preg match from http://detectmobilebrowsers.com/ */){ 
     $_SESSION['use_mobile'] = 0; 
     $_SESSION['user_agent'] = $UserAgent; // Overwrite old user-agent with new one. 
     header("location: $DesktopSite"); // Send visitor to desktop website. 
    } else { 
     // Visitor still seems to be mobile. 
     $_SESSION['use_mobile'] = 1; 
     $_SESSION['user_agent'] = $UserAgent; // Overwrite old user-agent with new one. 
    } 
} 

如果您首次在桌面上輸入移動網站,它將不會將您發回桌面站點,因爲它會首先創建會話。通過這種方式,您可以在桌面上檢查移動網站,而不是回發。但是,如果您更改了您的用戶代理,您將會重新驗證並重新導向失敗。

完美地工作。希望這可以幫助任何人在未來。

+0

一些其他信息:https://productforums.google.com/forum/#!topic/chrome/tz24aCo6F3I – Keale 2015-11-05 09:48:41

相關問題