【问题标题】:Device Detection With PHP [duplicate]使用 PHP 进行设备检测 [重复]
【发布时间】: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 questionthis one 都已接受答案并受社区保护。

标签: php laravel url-routing screen-size device-detection


【解决方案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”这个词是否一定会出现?
  • 这不是完美的解决方案,但我认为它在大多数情况下都可以工作
猜你喜欢
  • 2013-04-24
  • 1970-01-01
  • 2015-04-07
  • 2013-03-14
  • 1970-01-01
  • 2015-07-24
  • 2011-11-10
  • 2019-10-18
相关资源
最近更新 更多