使用 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 进行设备检测 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用javascript或php检测窗口关闭事件[重复]