Android 在移动设备上请求桌面站点选项

Android 在移动设备上请求桌面站点选项,android,iphone,web-applications,mobile,user-agent,Android,Iphone,Web Applications,Mobile,User Agent,许多移动设备,比如我的android手机,都有“请求桌面站点”选项。我正在建设移动网站,并希望使该本地功能发挥作用 作为开发人员,我们这一方的期望是什么?是否有GET请求,例如:Leve_mobile=1,还是设备本身改变了用户代理以欺骗应用程序,使其认为它只是另一个桌面?我已经在我的android设备上做了一些测试,并读取了用户代理,似乎它发生了变化。因此,我所做的使这个本机选项起作用的是将初始用户代理捕获到会话中,并在每个页面请求上将其与发送的请求进行比较。 如果用户代理不同,请重新验证它是

许多移动设备,比如我的android手机,都有“请求桌面站点”选项。我正在建设移动网站,并希望使该本地功能发挥作用


作为开发人员,我们这一方的期望是什么?是否有GET请求,例如:Leve_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.
    }
}
如果您第一次在桌面上进入移动网站,它将不会将您发送回桌面网站,因为它将首先创建会话。通过这种方式,你也可以在桌面上查看移动站点,而不是被发回。但是,如果您更改了用户代理,您将重新验证并在失败时重定向


工作完美。希望这对将来的任何人都有帮助。

大多数情况下,该设备会更改用户代理一些附加信息: