ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 用户代理类 用户代理(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 解析一个自定义的用户代理字符串,而不是当前正在访问站点的用户代理。