PHP-向特定浏览器显示消息

PHP-向特定浏览器显示消息,php,browser-detection,Php,Browser Detection,我已经找过了,我找到的东西比我需要的多得多。我以前用JavaScript做过,但我更喜欢用PHP。根据访问者使用的浏览器,我将如何向他们显示消息 例如: IE用户会看到:“您正在使用Internet Explorer” Firefox用户会看到:“您正在使用Mozilla Firefox” 我不确定除了IE、Firefox、Chrome、Safari和Opera之外是否还有其他主流浏览器。但我至少希望有一条消息分别指向这些浏览器中的每一个。谢谢。大多数客户端发送一个字符串,您可以使用它将该字符串

我已经找过了,我找到的东西比我需要的多得多。我以前用JavaScript做过,但我更喜欢用PHP。根据访问者使用的浏览器,我将如何向他们显示消息

例如:

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

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

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

大多数客户端发送一个字符串,您可以使用它将该字符串“翻译”为更“有用”的内容。

但是客户端可以自由发送它想要的任何字符串,例如识别自己为internet explorer的opera浏览器。

要识别用户的浏览器服务器端,您必须解析
$\u服务器['HTTP\u user\u AGENT']
变量


... 或者,最好使用该函数——请注意,您必须在php.ini中配置某些内容,否则会收到此类警告:

Warning: get_browser() [function.get-browser]: browscap ini directive not set
如PHP手册页面所示:

注意:要使其正常工作,请在 php.ini必须指向正确的 浏览器上browscap.ini文件的位置 你的系统。browscap.ini不是 与PHP捆绑,但您可能会发现 最新的» 在这里归档

而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)
在Firefox3.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)
在google chrome for Linux的最新版本(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浏览器很好;但对于某些尖端的测试浏览器来说可能并不完美——不过,我想,对于大多数“普通”浏览器来说,应该可以很好地工作……

我认为在PHP中检测浏览器的唯一方法是从用户代理,从HTTP用户代理

或者使用PHP函数get_browser()->

<?php $browser=get_browser(); 回显“您正在使用”。$browser['browser']; ?> 更多信息请访问


您可以在此处获取browscap.ini文件

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


您应该结合使用客户端和服务器端,有许多jscript库可以做到这一点,例如,

完全脱离主题语法挑剔:*您是;)谢谢,通常我对此很在行。呵呵。我猜我滑倒了。get_browser()返回一个数组;-)隐马尔可夫模型。。。我同意:)可能是文件泄露了?他们说如果第二个参数为真,则返回数组。。。在此之前,我总是以“get_browser(null,true)”的形式使用它,因为我总是需要一个数组。但现在我正在检查并获取_browser()返回相同的结果。。。真奇怪。get_browser()、get_browser(null,true)和get_browser('Mozilla/5.0(X11;U;Linux x86_64;en US;rv:1.9.1.2)Gecko/20090803 Ubuntu/9.04(jaunty)Shiretoko/3.5.2 FireHP/0.3')返回相同的结果谁得到了这个输出?我的意思是:
'browser'=>string'Mozilla'(长度=7)
不是正常的
print\r()
输出。@TiuTalk:我使用的是
var\u dump
,而不是
print\u r
,我安装了Xdebug扩展(请参阅),它增强了
var\u dump
的输出,其中包括提供调试器、分析器、, ... <?php $browser = get_browser(); echo 'You using '.$browser['browser']; ?>