許多移動設備(如我的android手機)都有'請求桌面站點'選項。我正在構建移動網站,並希望使本地功能發揮作用。在移動設備上請求桌面站點選項
作爲開發者,我們的最終目標是什麼?是否有一個GET請求,例如:leave_mobile = 1或者是設備本身是否更改用戶代理來欺騙應用程序,將其視爲另一個桌面?
許多移動設備(如我的android手機)都有'請求桌面站點'選項。我正在構建移動網站,並希望使本地功能發揮作用。在移動設備上請求桌面站點選項
作爲開發者,我們的最終目標是什麼?是否有一個GET請求,例如:leave_mobile = 1或者是設備本身是否更改用戶代理來欺騙應用程序,將其視爲另一個桌面?
我已經在我的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.
}
}
如果您首次在桌面上輸入移動網站,它將不會將您發回桌面站點,因爲它會首先創建會話。通過這種方式,您可以在桌面上檢查移動網站,而不是回發。但是,如果您更改了您的用戶代理,您將會重新驗證並重新導向失敗。
完美地工作。希望這可以幫助任何人在未來。
一些其他信息:https://productforums.google.com/forum/#!topic/chrome/tz24aCo6F3I – Keale 2015-11-05 09:48:41
大多數情況下,設備將更改用戶代理 – 2013-04-25 15:28:33