如何确定设备是移动设备还是桌面设备?

How to determine if the device is Mobile or Desktop?

我阅读了很多文章并寻找检测移动设备的解决方案。实际上遇到了 https://github.com/serbanghita/mobile-detect 但它是一个相当大的 php class.

其实我想要一个非常简单的解决方案。我想确定用户的浏览器是 Mobile/iPad/etc 还是桌面。所以我想要这样的东西:

<?php

require('detector.php');

if(isMobile() === true)
{
   header('mobile.php');
   exit();
}
else
{
   header('desktop.php');
   exit();
}

?>

需要一个非常简单的解决方案,我可以在不安装 Composer 或任何 php 框架的情况下将其放置到任何页面。

这怎么可能?

你真的尝试过使用你发现的项目吗?我想说服务器端移动检测是一项艰巨的任务,需要进行大量的细节检查以确保正确的结果。

使用这个 class 非常简单。来自示例目录:

require_once '../Mobile_Detect.php';
$detect = new Mobile_Detect;
$deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer');

现在您有一个具有以下三个值之一的变量:"tablet"、"phone" 或 "computer",您可以对此做出反应。

请注意,即使您可以在没有 Composer 的情况下使用此库,它也会定期更新(如 "once every month"),因为新设备上市并需要检测。您将不得不在某个时候更新此库。使用 Composer 让这一切变得非常简单。

如果您真的不想将 class 包含到您的代码中,Mozilla indicates that it is "good enough" to search for the string "mobi" in the user agent

<?php
if (stristr($_SERVER['HTTP_USER_AGENT'],'mobi')!==FALSE) {
    echo 'mobile device detected';
}
?>

您可以使用
重定向 link 在控制器中,您可以使用

检查
$keybord = app::get('keyboard')
if($keyboard == mobile ){
    redirect ('mobile');
}else{
   redirect ('desktop');
}   

我发现这条简单的线路非常可靠且易于实施.. 无需添加额外的线路 class。

if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), 'mobile') || strstr(strtolower($_SERVER['HTTP_USER_AGENT']), 'android')) {
   echo "running on mobile";
}