4

我已经搜索过这个,我发现的一切都比我需要的要多。我以前在 JavaScript 中做过这个,但我真的更喜欢使用 PHP。根据他们使用的浏览器,我将如何向访问者显示消息?

例子:

IE 用户会看到:“您正在使用 Internet Explorer”

Firefox 用户会看到:“您正在使用 Mozilla Firefox”

我不确定除了 IE、Firefox、Chrome、Safari 和 Opera 之外是否还有其他主流浏览器。但我至少希望将一条消息分别定向到这些浏览器中的每一个。谢谢你。

4

5 回答 5

6

要识别用户的浏览器服务器端,您必须解析$_SERVER['HTTP_USER_AGENT']变量...


... 或者,可能更好的是,使用该get_browser功能 - 只需注意您必须在 php.ini 中配置某些内容,否则您会收到这种警告:

Warning: get_browser() [function.get-browser]: browscap ini directive not set

就像 PHP 手册页说的那样:

注意:为了使它起作用,您在 php.ini 中的 browscap 配置设置必须指向系统上 browscap.ini 文件的正确位置。browscap.ini 不与 PHP 捆绑,但您可以在此处找到最新的 » php_browscap.ini 文件。

虽然 browscap.ini 包含许多浏览器的信息,但它依赖于用户更新来保持数据库最新。文件的格式是不言自明的。


下载该文件并将这一行添加到 php.ini 后:

browscap = /home/squale/developpement/tests/temp/php_browscap.ini

以下部分代码:

var_dump(get_browser(null, true));

给我 :

array
  'browser_name_regex' => string '^mozilla/5\.0 (x11; .*linux.*; .*rv:1\.9.*) gecko/.*$' (length=53)
  'browser_name_pattern' => string 'Mozilla/5.0 (X11; *Linux*; *rv:1.9*) Gecko/*' (length=44)
  'parent' => string 'Mozilla 1.9' (length=11)
  'platform' => string 'Linux' (length=5)
  'browser' => string 'Mozilla' (length=7)
  'version' => string '1.9' (length=3)
  'majorver' => string '1' (length=1)
  'minorver' => string '9' (length=1)
  'alpha' => string '1' (length=1)
  'frames' => string '1' (length=1)
  'iframes' => string '1' (length=1)
  'tables' => string '1' (length=1)
  'cookies' => string '1' (length=1)
  'javaapplets' => string '1' (length=1)
  'javascript' => string '1' (length=1)
  'cssversion' => string '2' (length=1)
  'supportscss' => string '1' (length=1)
  'beta' => string '' (length=0)
  'win16' => string '' (length=0)
  'win32' => string '' (length=0)
  'win64' => string '' (length=0)
  'backgroundsounds' => string '' (length=0)
  'cdf' => string '' (length=0)
  'vbscript' => string '' (length=0)
  'activexcontrols' => string '' (length=0)
  'isbanned' => string '' (length=0)
  'ismobiledevice' => string '' (length=0)
  'issyndicationreader' => string '' (length=0)
  'crawler' => string '' (length=0)
  'aol' => string '' (length=0)
  'aolversion' => string '0' (length=1)

在火狐 3.5 上;和 :

array
  'browser_name_regex' => string '^.*$' (length=4)
  'browser_name_pattern' => string '*' (length=1)
  'browser' => string 'Default Browser' (length=15)
  'version' => string '0' (length=1)
  'majorver' => string '0' (length=1)
  'minorver' => string '0' (length=1)
  'platform' => string 'unknown' (length=7)
  'alpha' => string '' (length=0)
  ....
  'aol' => string '' (length=0)
  'aolversion' => string '0' (length=1)

在 Linux 版 google chrome 的最新版本(4.0.203.2)上——好吧,考虑到它是某种夜间构建,我想它不被识别是正常的……

作为参考,这里是用户代理字符串:

string 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0' (length=109)


这表明 get_ browser isnice ; 但对于一些尖端的测试浏览器来说可能并不完美——我想仍然应该可以在大多数“常见”浏览器上正常工作......

于 2009-09-03T09:15:58.297 回答
2

大多数客户端发送一个用户代理字符串,您可以使用get_browser将该字符串“翻译”成更“信息丰富”的内容。
但是 hte 客户端可以自由发送它想要的任何字符串,例如将自己标识为 Internet Explorer 的歌剧浏览器。

于 2009-09-03T09:15:36.817 回答
0

我认为在 PHP 中检测浏览器的唯一方法是来自用户代理,来自 HTTP_USER_AGENT。

或使用 PHP 函数 get_browser() -> http://us3.php.net/function.get-browser

于 2009-09-03T09:21:46.270 回答
0
<?php
  $browser = get_browser();
  echo '你使用'.$browser['browser'];
?>

更多信息在http://www.php.net/function.get-browser

您可以在此处获取 browscap.ini 文件http://browsers.garykeith.com/downloads.asp

于 2009-09-03T09:22:11.370 回答
0

实际上没有很好的方法来确定服务器端的浏览器功能,因为每个用户,无论他的浏览器版本如何,都可以操纵浏览器设置,从而获得不同的功能(例如禁用 Java)。

你应该求助于客户端与服务器端相结合,有很多 jscript 库可以做到这一点,例如,链接文本

于 2010-02-13T13:16:56.920 回答