如何在cakephp 3请求中获取浏览器名称?

时间:2015-07-07 12:29:34

标签: php cakephp-3.0

我需要在我的网络应用中获取请求浏览器名称。(用于分析)

在核心php中,当我使用$visitor_user_agent=$_SERVER['HTTP_USER_AGENT']时,它会在使用chrome时返回Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36字符串。然后preg_match('/Chrome/i', $visitor_user_agent)可用于了解其是否为chrome。我不确定是否这是查找浏览器名称的有效方法。

我还找到了get_browser链接,但它没有提供浏览器名称。

在cakephp3或核心php中有没有办法获取浏览器名称?

2 个答案:

答案 0 :(得分:3)

这将返回用于请求的用户代理:

$this->request->header('User-Agent');

http://book.cakephp.org/3.0/en/controllers/request-response.html

答案 1 :(得分:3)

查看Request对象的documentation

您可以使用HTTP_USER_AGENT方法获取env()

$this->request->env('HTTP_USER_AGENT');

您还可以准备自定义检测器:

$this->request->addDetector(
    'chrome',
    ['env' => 'HTTP_USER_AGENT', 'pattern' => '/Chrome/i']
);

然后在控制器中使用is()方法,如下所示:

if($this->request->is('chrome')) {
    // do stuff for chrome
}