如何在 PHP 中获取用户代理

Posted

技术标签:

【中文标题】如何在 PHP 中获取用户代理【英文标题】:How to get user agent in PHP 【发布时间】:2012-05-01 21:33:17 【问题描述】:

我正在使用此 JS 代码来了解用户使用的浏览器。

<script>
  document.write(navigator.appName);
</script>

我想将这个 navigator.appName 转换为 php 代码,以便像这样使用它:

if ($appName == "Internet Explorer") 
  // blabla

我该怎么做?

【问题讨论】:

相关:reliable user browser detection with php. 【参考方案1】:

PHP 8 有这个功能$_SERVER['HTTP_SEC_CH_UA']Sec-CH-UA 让你直接检测浏览器名称

if (  strpos ( $_SERVER['HTTP_SEC_CH_UA'],'Opera'   )
       //        
    

【讨论】:

【参考方案2】:

我用:

<?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";

【讨论】:

【参考方案3】:

你也可以使用php原生函数get_browser()

重要提示: 你应该有一个 browscap.ini 文件。

【讨论】:

这需要您拥有最新的 browscap.ini 文件 确实如此,并且有很多在线资源可供您为您的网站下载一个,例如browscap.org 返回 null 或 false 确保你有一个 browscap.ini 文件【参考方案4】:

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

【讨论】:

这是有效的$_SERVER['USER_AGENT']??应该是$_SERVER['HTTP_USER_AGENT']???【参考方案5】:

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

【讨论】:

注意,这个不能设置! 在 PHP7+ 中,您可以编写 $_SERVER['HTTP_USER_AGENT']??null 让它返回 null 而不是在未定义时抛出错误 或者这样做,如果您只是想稍后进行字符串操作并且不想关心 null 或未设置:$ua = $_SERVER['HTTP_USER_AGENT'].''; 或者简单地检查isset()...干净和可读的代码应该始终是一个高优先级。 @StanE - PHP 7 版本非常好。小说!== 不可读。

以上是关于如何在 PHP 中获取用户代理的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 检测“Google Chrome”作为用户代理?

如何从 php 中的用户代理字符串中检测浏览器欺骗和机器人

PHP 更改 DOM 用户代理

PHP获取用户真实IP地址

如何使用 Flask 获取用户代理?

如何在 MFP 8 cordova 应用程序(Android/iOS)中获取实际的用户代理