用户代理类

用户代理类提供了一些函数,可以帮助识别访问您网站的浏览器、移动设备或机器人的信息。

使用用户代理类

初始化类

用户代理类始终可以直接从当前的 IncomingRequest 实例中获取。默认情况下,您的控制器中会有一个请求实例,您可以从中检索用户代理类。

<?php

$agent = $this->request->getUserAgent();

用户代理定义

用户代理名称定义位于以下位置的配置文件中:app/Config/UserAgents.php。如果需要,您可以在各种用户代理数组中添加项目。

示例

初始化用户代理类时,它将尝试确定访问您网站的用户代理是 Web 浏览器、移动设备还是机器人。如果可用,它还会收集平台信息。

<?php

$agent = $this->request->getUserAgent();

if ($agent->isBrowser()) {
    $currentAgent = $agent->getBrowser() . ' ' . $agent->getVersion();
} elseif ($agent->isRobot()) {
    $currentAgent = $agent->getRobot();
} elseif ($agent->isMobile()) {
    $currentAgent = $agent->getMobile();
} else {
    $currentAgent = 'Unidentified User Agent';
}

echo $currentAgent;

echo $agent->getPlatform(); // Platform info (Windows, Linux, Mac, etc.)

类参考

class CodeIgniter\HTTP\UserAgent
isBrowser([$key = null])
参数:
  • $key (string) – 可选的浏览器名称

返回值:

如果用户代理是(指定的)浏览器,则为 true,否则为 false

返回类型:

bool

如果用户代理是已知的 Web 浏览器,则返回 true/false(布尔值)。

<?php

if ($agent->isBrowser('Safari')) {
    echo 'You are using Safari.';
} elseif ($agent->isBrowser()) {
    echo 'You are using a browser.';
}

注意

此示例中的字符串“Safari”是浏览器定义列表中的一个数组键。如果您想添加新的浏览器或更改字符串,可以在 **app/Config/UserAgents.php** 中找到此列表。

isMobile([$key = null])
参数:
  • $key (string) – 可选的移动设备名称

返回值:

如果用户代理是(指定的)移动设备,则为 true,否则为 false

返回类型:

bool

如果用户代理是已知的移动设备,则返回 true/false(布尔值)。

<?php

if ($agent->isMobile('iphone')) {
    echo view('iphone/home');
} elseif ($agent->isMobile()) {
    echo view('mobile/home');
} else {
    echo view('web/home');
}
isRobot([$key = null])
参数:
  • $key (string) – 可选的机器人名称

返回值:

如果用户代理是(指定的)机器人,则为 true,否则为 false

返回类型:

bool

如果用户代理是已知的机器人,则返回 true/false(布尔值)。

注意

用户代理库只包含最常见的机器人定义。它不是一个完整的机器人列表。有数百个机器人,因此搜索每一个机器人效率不高。如果您发现一些经常访问您网站的机器人不在列表中,您可以将它们添加到您的 **app/Config/UserAgents.php** 文件中。

isReferral()
返回值:

如果用户代理是推荐来源,则为 true,否则为 false

返回类型:

bool

如果用户代理是从另一个网站推荐的,则返回 true/false(布尔值)。

getBrowser()
返回值:

检测到的浏览器或空字符串

返回类型:

string

返回一个字符串,其中包含查看您网站的 Web 浏览器的名称。

getVersion()
返回值:

检测到的浏览器版本或空字符串

返回类型:

string

返回一个字符串,其中包含查看您网站的 Web 浏览器的版本号。

getMobile()
返回值:

检测到的移动设备品牌或空字符串

返回类型:

string

返回一个字符串,其中包含查看您网站的移动设备的名称。

getRobot()
返回值:

检测到的机器人名称或空字符串

返回类型:

string

返回一个字符串,其中包含查看您网站的机器人的名称。

getPlatform()
返回值:

检测到的操作系统或空字符串

返回类型:

string

返回一个字符串,其中包含查看您网站的平台(Linux、Windows、OS X 等)。

getReferrer()
返回值:

检测到引用来源或空字符串

返回类型:

string

如果用户代理来自另一个网站,则为引用来源。通常,您会按如下方式进行测试

<?php

if ($agent->isReferral()) {
    echo $agent->referrer();
}
getAgentString()
返回值:

完整的用户代理字符串或空字符串

返回类型:

string

返回包含完整用户代理字符串的字符串。通常它类似于以下内容

Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.4) Gecko/20060613 Camino/1.0.2
parse($string)
参数:
  • $string (string) – 自定义用户代理字符串

返回类型:

void

解析自定义用户代理字符串,与当前访问者报告的字符串不同。