1 教程-内容提要
1.1 CodeIgniter3.1教程——开始
1.2 加载静态内容
1.3 读取新闻条目
1.4 创建新闻条目
2 常规主题
2.1 CodeIgniter URL
2.2 控制器
2.3 保留名称
2.4 视图
2.5 模型
2.6 辅助函数
2.7 使用 CodeIgniter 类库
2.8 创建类库
2.9 使用 CodeIgniter 驱动器
2.10 创建驱动器
2.11 创建核心系统类
2.12 创建附属类
2.13 钩子 - 扩展框架核心
2.14 自动加载资源
2.15 公共函数
2.16 兼容性函数
2.17 URI 路由
2.18 错误处理
2.19 网页缓存
2.20 程序分析
2.21 以 CLI 方式运行
2.22 管理你的应用程序
2.23 处理多环境
2.24 在视图文件中使用 PHP 替代语法
2.25 安全
2.26 PHP 开发规范
3 类库参考
3.1 基准测试类
3.2 缓存驱动器
3.3 日历类
3.4 购物车类
3.5 配置类
3.6 Email 类
3.7 加密类(废弃)
3.8 加密类(新版)
3.9 文件上传类
3.10 表单验证类
3.11 FTP 类
3.12 图像处理类
3.13 输入类
3.14 Javascript 类
3.15 语言类
3.16 加载器类
3.17 迁移类
3.18 输出类
3.19 分页类
3.20 模板解析类
3.21 安全类
3.22 Session 类
3.23 HTML 表格类
3.24 引用通告类
3.25 排版类
3.26 单元测试类
3.27 URI 类
3.28 用户代理类
3.29 XML-RPC 与 XML-RPC 服务器类
3.30 Zip 编码类
4 数据库参考
4.1 数据库快速入门: 示例代码
4.2 数据库配置
4.3 连接你的数据库
4.4 查询
4.5 生成查询结果
4.6 查询辅助函数
4.7 查询构造器类
4.8 事务
4.9 数据库元数据
4.10 自定义函数调用
4.11 查询缓存
4.12 数据库工厂类
4.13 数据库工具类
4.14 数据库驱动器参考
5 辅助函数参考
5.1 数组辅助函数
5.2 验证码辅助函数
5.3 Cookie 辅助函数
5.4 日期辅助函数
5.5 目录辅助函数
5.6 下载辅助函数
5.7 邮件辅助函数
5.8 文件辅助函数
5.9 表单辅助函数
5.10 HTML 辅助函数
5.11 Inflector 辅助函数
5.12 语言辅助函数
5.13 数字辅助函数
5.14 路径辅助函数
5.15 安全辅助函数
5.16 表情辅助函数(废弃)
5.17 字符串辅助函数
5.18 文本辅助函数
5.19 排版辅助函数
5.20 URL 辅助函数
5.21 XML 辅助函数

用户代理类

2017-12-03 20:00:17
linefo
541
最后编辑:linefo 于 2017-12-03 21:06:30

用户代理类

用户代理(User Agent)类提供了一些方法来帮助你识别正在访问你的站点的浏览器、 移动设备或机器人的信息。另外,你还可以通过它获取 referrer 信息,以及 支持的语言和字符集信息。

使用用户代理类

初始化类

正如 CodeIgniter 中的其他类一样,在你的控制器中使用 $this->load->library() 方法来初始化用户代理类:

$this->load->library('user_agent');

初始化之后,用户代理类的对象就可以这样访问:

$this->agent

用户代理的定义

用户代理的名称定义在 application/config/user_agents.php 配置文件中。 你也可以根据需要向相应的数组中添加你自己的用户代理。

例子

当用户代理类初始化之后,它会尝试判断正在访问你的站点的是 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.)

类参考

class CI_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

解析一个自定义的用户代理字符串,而不是当前正在访问站点的用户代理。