如何判断设备是移动设备还是桌面设备


How to determine if the device is Mobile or Desktop?

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

我其实想要一个非常简单的解决方案。我想确定如果用户的浏览器是移动/iPad/等或桌面。所以我想要这样写:

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

?>

一个非常简单的解决方案是需要的,我可以放置到任何页面,而无需安装作曲家或任何php框架。

这怎么可能呢?

您是否实际尝试过使用您发现的项目?我想说,服务器端移动检测是一项巨大的任务,需要大量的细节检查来确保正确的结果。

使用这个类非常简单。从示例目录:

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

现在你有了一个变量,它有三个值:"tablet", "phone"或"computer",你可以对此作出反应。

请注意,即使您能够在没有Composer的情况下使用此库,它也会定期更新(如"每月一次"),因为新设备进入市场并需要被检测到。您必须在某个时候更新此库。

如果您真的不想在代码中包含该类,Mozilla指出在用户代理中搜索字符串"mobi"是"足够好"的。

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

你可以用
重定向链接在控制器中,你可以使用

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

我发现这个简单的行是相当可靠和容易实现。不需要添加一个额外的类。

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