# 用戶代理類
用戶代理(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 貢獻你的力量