# 用户代理类
用户代理(User Agent)类提供了一些方法来帮助你识别正在访问你的站点的浏览器、 移动设备或机器人的信息。另外,你还可以通过它获取 referrer 信息,以及 支持的语言和字符集信息。
* [使用用户代理类](http://codeigniter.org.cn/user_guide/libraries/user_agent.html#id2)
* [初始化类](http://codeigniter.org.cn/user_guide/libraries/user_agent.html#id3)
* [用户代理的定义](http://codeigniter.org.cn/user_guide/libraries/user_agent.html#id4)
* [例子](http://codeigniter.org.cn/user_guide/libraries/user_agent.html#id5)
* [类参考](http://codeigniter.org.cn/user_guide/libraries/user_agent.html#id6)
## [使用用户代理类](http://codeigniter.org.cn/user_guide/libraries/user_agent.html#id7)
### [初始化类](http://codeigniter.org.cn/user_guide/libraries/user_agent.html#id8)
正如 CodeIgniter 中的其他类一样,在你的控制器中使用 $this->load->library() 方法来初始化用户代理类:
~~~
$this->load->library('user_agent');
~~~
初始化之后,用户代理类的对象就可以这样访问:
~~~
$this->agent
~~~
### [用户代理的定义](http://codeigniter.org.cn/user_guide/libraries/user_agent.html#id9)
用户代理的名称定义在 application/config/user_agents.php 配置文件中。 你也可以根据需要向相应的数组中添加你自己的用户代理。
### [例子](http://codeigniter.org.cn/user_guide/libraries/user_agent.html#id10)
当用户代理类初始化之后,它会尝试判断正在访问你的站点的是 Web 浏览器,还是移动设备, 或者是机器人。它还可以获取平台的相关信息。
~~~
$this->load->library('user_agent');
if ($this->agent->is_browser())
{
$agent = $this->agent->browser().' '.$this->agent->version();
}
elseif ($this->agent->is_robot())
{
$agent = $this->agent->robot();
}
elseif ($this->agent->is_mobile())
{
$agent = $this->agent->mobile();
}
else
{
$agent = 'Unidentified User Agent';
}
echo $agent;
echo $this->agent->platform(); // Platform info (Windows, Linux, Mac, etc.)
~~~
## [类参考](http://codeigniter.org.cn/user_guide/libraries/user_agent.html#id11)
classCI_User_agent
is_browser([$key = NULL])
参数:
* **$key** (string) -- Optional browser name
返回: TRUE if the user agent is a (specified) browser, FALSE if not
返回类型: bool
判断用户代理是否为某个已知的 Web 浏览器,返回布尔值 TRUE 或 FALSE 。
~~~
if ($this->agent->is_browser('Safari'))
{
echo 'You are using Safari.';
}
elseif ($this->agent->is_browser())
{
echo 'You are using a browser.';
}
~~~
注解
这个例子中的 "Safari" 字符串是配置文件中定义的 browser 数组的一个元素,你可以在 **application/config/user_agents.php** 文件中找到它,如果需要的话,你可以对其进行添加或修改。
is_mobile([$key = NULL])
参数:
* **$key** (string) -- Optional mobile device name
返回: TRUE if the user agent is a (specified) mobile device, FALSE if not
返回类型: bool
判断用户代理是否为某个已知的移动设备,返回布尔值 TRUE 或 FALSE 。
~~~
if ($this->agent->is_mobile('iphone'))
{
$this->load->view('iphone/home');
}
elseif ($this->agent->is_mobile())
{
$this->load->view('mobile/home');
}
else
{
$this->load->view('web/home');
}
~~~
is_robot([$key = NULL])
参数:
* **$key** (string) -- Optional robot name
返回: TRUE if the user agent is a (specified) robot, FALSE if not
返回类型: bool
判断用户代理是否为某个已知的机器人,返回布尔值 TRUE 或 FALSE 。
注解
用户代理类只定义了一些常见的机器人,它并不是完整的机器人列表,因为可能存在上百个不同的机器人, 遍历这个列表效率会很低。如果你发现某个机器人经常访问你的站点,并且它不在这个列表中,你可以将其添加到文件 **application/config/user_agents.php** 中。
is_referral()
返回: TRUE if the user agent is a referral, FALSE if not
返回类型: bool
判断用户代理是否为从另一个网站跳过来的(Referer 为另一个网站),返回布尔值 TRUE 或 FALSE 。
browser()
返回: Detected browser or an empty string
返回类型: string
返回当前正在浏览你的站点的浏览器名称。
version()
返回: Detected browser version or an empty string
返回类型: string
返回当前正在浏览你的站点的浏览器版本号。
mobile()
返回: Detected mobile device brand or an empty string
返回类型: string
返回当前正在浏览你的站点的移动设备名称。
robot()
返回: Detected robot name or an empty string
返回类型: string
返回当前正在浏览你的站点的机器人名称。
platform()
返回: Detected operating system or an empty string
返回类型: string
返回当前正在浏览你的站点的平台(Linux、Windows、OSX 等)。
referrer()
返回: Detected referrer or an empty string
返回类型: string
如果用户代理引用了另一个站点,返回 referrer 。一般你会像下面这样做:
~~~
if ($this->agent->is_referral())
{
echo $this->agent->referrer();
}
~~~
agent_string()
返回: Full user agent string or an empty string
返回类型: string
返回完整的用户代理字符串,一般字符串的格式如下:
~~~
Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.4) Gecko/20060613 Camino/1.0.2
~~~
accept_lang([$lang = 'en'])
参数:
* **$lang** (string) -- Language key
返回: TRUE if provided language is accepted, FALSE if not
返回类型: bool
判断用户代理是否支持某个语言。例如:
~~~
if ($this->agent->accept_lang('en'))
{
echo 'You accept English!';
}
~~~
注解
这个方法一般不太可靠,因为有些浏览器并不提供语言信息,甚至在那些提供了语言信息的浏览器中,也并不一定准确。
languages()
返回: An array list of accepted languages
返回类型: array
返回一个数组,包含用户代理支持的所有语言。
accept_charset([$charset = 'utf-8'])
参数:
* **$charset** (string) -- Character set
返回: TRUE if the character set is accepted, FALSE if not
返回类型: bool
判断用户代理是否支持某个字符集。例如:
~~~
if ($this->agent->accept_charset('utf-8'))
{
echo 'You browser supports UTF-8!';
}
~~~
注解
这个方法一般不太可靠,因为有些浏览器并不提供字符集信息,甚至在那些提供了字符集信息的浏览器中,也并不一定准确。
charsets()
返回: An array list of accepted character sets
返回类型: array
返回一个数组,包含用户代理支持的所有字符集。
parse($string)
参数:
* **$string** (string) -- A custom user-agent string
返回类型: void
解析一个自定义的用户代理字符串,而不是当前正在访问站点的用户代理。
- 欢迎使用 CodeIgniter
- 安装说明
- 下载 CodeIgniter
- 安装说明
- 从老版本升级
- 疑难解答
- CodeIgniter 概览
- CodeIgniter 将从这里开始
- CodeIgniter 是什么?
- 支持特性
- 应用程序流程图
- 模型-视图-控制器
- 设计与架构目标
- 教程 - 内容提要
- 加载静态内容
- 读取新闻条目
- 创建新闻条目
- 结束语
- 常规主题
- CodeIgniter URL
- 控制器
- 保留名称
- 视图
- 模型
- 辅助函数
- 使用 CodeIgniter 类库
- 创建类库
- 使用 CodeIgniter 驱动器
- 创建驱动器
- 创建核心系统类
- 创建附属类
- 钩子 - 扩展框架核心
- 自动加载资源
- 公共函数
- 兼容性函数
- URI 路由
- 错误处理
- 网页缓存
- 程序分析
- 以 CLI 方式运行
- 管理你的应用程序
- 处理多环境
- 在视图文件中使用 PHP 替代语法
- 安全
- PHP 开发规范
- 类库参考
- 基准测试类
- 缓存驱动器
- 日历类
- 购物车类
- 配置类
- Email 类
- 加密类
- 加密类(新版)
- 文件上传类
- 表单验证类
- FTP 类
- 图像处理类
- 输入类
- Javascript 类
- 语言类
- 加载器类
- 迁移类
- 输出类
- 分页类
- 模板解析类
- 安全类
- Session 类
- HTML 表格类
- 引用通告类
- 排版类
- 单元测试类
- URI 类
- 用户代理类
- XML-RPC 与 XML-RPC 服务器类
- Zip 编码类
- 数据库参考
- 数据库快速入门: 示例代码
- 数据库配置
- 连接你的数据库
- 查询
- 生成查询结果
- 查询辅助函数
- 查询构造器类
- 事务
- 数据库元数据
- 自定义函数调用
- 数据库缓存类
- 数据库工厂类
- 数据库工具类
- 数据库驱动器参考
- 辅助函数参考
- 数组辅助函数
- 验证码辅助函数
- Cookie 辅助函数
- 日期辅助函数
- 目录辅助函数
- 下载辅助函数
- 邮件辅助函数
- 文件辅助函数
- 表单辅助函数
- HTML 辅助函数
- 语言辅助函数
- Inflector 辅助函数
- 数字辅助函数
- 路径辅助函数
- 安全辅助函数
- 表情辅助函数
- 字符串辅助函数
- 文本辅助函数
- 排版辅助函数
- URL 辅助函数
- XML 辅助函数
- 向 CodeIgniter 贡献你的力量