如何在PHP中获取用户代理

Olg*_*nik 72 php user-agent

我正在使用这个JS代码来了解用户使用的浏览器.

<script>
  document.write(navigator.appName);
</script>
Run Code Online (Sandbox Code Playgroud)

我想让这个navigator.appName到php代码使用它像这样:

if ($appName == "Internet Explorer") {
  // blabla
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

nol*_*oli 181

请改用原生PHP $_SERVER['HTTP_USER_AGENT']变量.

  • 或者只需检查`isset()`...干净且可读的代码应始终是高优先级. (12认同)
  • 注意,这可以不设置! (10认同)
  • 在PHP7 +中,您可以编写`$ _SERVER ['HTTP_USER_AGENT'] ?? null`以使其返回null而不是在未定义时抛出错误 (7认同)
  • @StanE - PHP 7 版本非常好。小说!==无法阅读。 (2认同)

小智 8

我用:

<?php
$agent = $_SERVER["HTTP_USER_AGENT"];

if( preg_match('/MSIE (\d+\.\d+);/', $agent) ) {
  echo "You're using Internet Explorer";
} else if (preg_match('/Chrome[\/\s](\d+\.\d+)/', $agent) ) {
  echo "You're using Chrome";
} else if (preg_match('/Edge\/\d+/', $agent) ) {
  echo "You're using Edge";
} else if ( preg_match('/Firefox[\/\s](\d+\.\d+)/', $agent) ) {
  echo "You're using Firefox";
} else if ( preg_match('/OPR[\/\s](\d+\.\d+)/', $agent) ) {
  echo "You're using Opera";
} else if (preg_match('/Safari[\/\s](\d+\.\d+)/', $agent) ) {
  echo "You're using Safari";
}
Run Code Online (Sandbox Code Playgroud)


art*_*r86 6

如果您想将数据从客户端传递到服务器,可以使用 jQuery ajax 方法链接。在这种情况下,您可以使用$_SERVER['HTTP_USER_AGENT']变量来找到浏览器用户代理。


Aur*_*ata 5

您也可以使用 php 本机功能get_browser()

重要说明:您应该有一个 browscap.ini 文件。

  • 这要求您拥有最新的 browscap.ini 文件 (3认同)
  • 确保您有 browscap.ini 文件 (2认同)