许多移动设备,比如我的安卓手机,都有“请求桌面站点”的选项。我正在构建移动网站,希望让这个本地功能起作用。
作为开发人员,我们需要做什么呢?例如,是否有一个GET请求leave_mobile=1,或者是设备本身更改了用户代理,以欺骗应用程序认为它只是另一个桌面设备?
作为开发人员,我们需要做什么呢?例如,是否有一个GET请求leave_mobile=1,或者是设备本身更改了用户代理,以欺骗应用程序认为它只是另一个桌面设备?
我在我的Android设备上进行了一些测试,读出了用户代理,并且似乎会发生变化。为使本机选项起作用,我所做的是将初始用户代理捕获到会话中,并在每个页面请求时将其与正在发送的用户代理进行比较。 如果用户代理不同,请重新验证它是否为移动设备,如果验证成功,则使用新的用户代理覆盖会话用户代理。但是,如果新的验证失败,它可能想要查找桌面版,因此发送一个新的头部重定向。
$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.
}
}