使用 PHP 进行设备检测 [重复]

Posted

技术标签:

【中文标题】使用 PHP 进行设备检测 [重复]【英文标题】:Device Detection With PHP [duplicate] 【发布时间】:2019-01-29 22:54:31 【问题描述】:

我正在使用 php,特别是 Laravel。

我想根据用户屏幕的大小(例如:手机或电脑)显示不同的视图。 简而言之,我希望我的路由如下所示:

if (device == mobile)
    Route::view('/', 'mobile_ui');
 else 
    Route::view('/', 'desktop_ui');

让我澄清一下,这个问题与响应式设计无关。 我只想使用两个不同的 UI 模板;一个用于移动设备,一个用于桌面设备。


编辑:正如@rickdenhaan 在 cmets 中指出的那样,这个问题的答案可以在这里找到:Simplest way to detect a mobile device

【问题讨论】:

PHP是服务器端,无法直接获取屏幕大小,需要前端JS等技术获取屏幕大小,然后传递给PHP。 难道不能通过 HTTP 请求获得它吗? 可以根据 HTTP 标头的组合进行有根据的猜测(Mobile Detect 的工作方式如下)。通过这种方式,您可以将 PC 与平板电脑和手机区分开来,但它不会告诉您屏幕分辨率、像素密度或物理测量值。实际屏幕大小不是请求信息的一部分,只能使用客户端脚本检索。 @rickdenhaan 这对我来说是一个很好的解决方案,因为我并不需要实际的屏幕尺寸;只是桌面与移动。 嗯,我无法收回该副本并标记另一个副本。 This question 和 this one 都已接受答案并受社区保护。 【参考方案1】:

为此使用 js 并重定向到具有不同布局的不同路线。或者您可以检查 $_SERVER['HTTP_USER_AGENT'] 变量并通过该变量检测移动设备

编辑: 我做了额外的挖掘,发现了这个: https://github.com/serbanghita/Mobile-Detect 它应该可以完全解决您的问题:)

【讨论】:

究竟如何?这是我得到的:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/63.0.3239.108 Safari/537.36 当我在移动设备上时,我看到 Mozilla/5.0 (Linux; android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.99 Mobile Safari/537.36 这样你就可以检查是否字符串包含 Android 并且您知道用户使用手机 鉴于 UA 会随着软件和硬件的变化而变化,因此存在数百万种 User-Agent 组合。例如,iPhone 6 上的 Chrome 浏览器将使用与同一手机上的 Safari 浏览器不同的 UA 进行自我介绍。每种设备类型,包括手机、平板电脑、台式机,都可能带有自己的 UA。 deviceatlas.com/blog/list-of-user-agent-strings @HenslerSoftware 但是,如果我们通过 Android 手机进行操作,“Android”这个词是否一定会出现? 这不是完美的解决方案,但我认为它在大多数情况下都可以工作

以上是关于使用 PHP 进行设备检测 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 检测 SSL [重复]

检测移动设备上的访问[重复]

如何使用javascript或php检测窗口关闭事件[重复]

jQuery自动检测移动设备并重定向到移动网站[重复]

CSS媒体查询不足以检测超大型移动/平板设备与桌面设备[重复]

使用 PHP 检测和删除空间类型 [重复]