Gil*_*ong 5 iphone mobile user-agent android web-applications
许多移动设备,如我的Android手机有一个"请求桌面网站"选项.我正在构建移动网站,并希望使该原生功能正常运行.
作为开发人员,我们期待什么?是否有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.
}
}
Run Code Online (Sandbox Code Playgroud)
如果您是第一次在桌面上进入移动网站,它将不会将您发送回桌面网站,因为它将首先创建会话.这样,您也可以在桌面上检查移动网站,而不是回送.但是,如果您更改了用户代理,则会在失败时重新验证并重定向.
完美的工作.希望这可能在将来帮助任何人.
| 归档时间: |
|
| 查看次数: |
5558 次 |
| 最近记录: |