User Agent 類別¶
User Agent 類別提供函數來幫助你辨別瀏覽器、 行動裝置或是機器人(Robot)的資訊, 此外你也可以取得參照位址(referrer)、語系與編碼資訊。
使用 User Agent 類別¶
初始化類別¶
就像 CodeIgniter 其它多數類別一樣, User Agent 類別可以在你的 controller 內透過 $this->load->library 函式來初始化:
$this->load->library('user_agent');
載入之後,就可以這樣取得 Zip 物件: $this->agent
User Agent 定義¶
User Agent 的定義檔放置在 application/config/user_agents.php,如有必要你可以額外增加項目。
範例¶
當 User Agent 初始化後, 它將開始判斷是瀏覽器、行動裝置或機器人來造訪你的網頁, 如果可以它也會取得平台資訊。
$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])¶ Parameters: - $key (string) – 瀏覽器的名稱,可省略
Returns: 如果是(指定的)瀏覽器,回傳 TRUE,否則回傳 FALSE
Return type: bool
判別是否為已知的瀏覽器,回傳 TRUE 或 FALSE。
if ($this->agent->is_browser('Safari')) { echo 'You are using Safari.'; } elseif ($this->agent->is_browser()) { echo 'You are using a browser.'; }
Note
在這個範例中 “Safari” 這個字串是瀏覽器清單裡面陣列的鍵值。 你可以在 application/config/user_agents.php 找到瀏覽器清單來新增或修改設定。
-
is_mobile
([$key = NULL])¶ Parameters: - $key (string) – 行動裝置的名稱,可省略
Returns: 如果是(指定的)行動裝置,回傳 TRUE,否則回傳 FALSE
Return type: 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])¶ Parameters: - $key (string) – 機器人名稱,可省略
Returns: 如果是(指定的)機器人,回傳 TRUE,否則回傳 FALSE
Return type: bool
判別是否為已知的機器人,回傳 TRUE 或 FALSE。
Note
機器人清單中只包含了幾種最常見的機器人,而不是完整的清單。 由於機器人種類有數百種,因此想要把每一種都找出來是沒有效率的。 如果你發現常常造訪網站的機器人不在清單內,你可以將其加入 application/config/user_agents.php 。
-
is_referral
()¶ Returns: 若使用者是否從其它網站過來的,回傳 TRUE,否則回傳 FALSE Return type: bool 判斷使用者是否從其它網站過來,回傳 TRUE 或 FALSE。
-
browser
()¶ Returns: 偵測到的瀏覽器名稱或是空字串 Return type: string 回傳正在造訪你的網站的瀏覽器名稱。
-
version
()¶ Returns: 偵測到的瀏覽器版本或是空字串 Return type: string 回傳正在造訪你的網站的瀏覽器版本。
-
mobile
()¶ Returns: 偵測到的行動裝置品牌或是空字串 Return type: string 回傳正在造訪你的網站的行動裝置名稱。
-
robot
()¶ Returns: 偵測到的機器人名稱或是空字串 Return type: string 回傳正在造訪你的網站的機器人名稱。
-
platform
()¶ Returns: 偵測到的作業系統或是空字串 Return type: string 回傳正在造訪你的網站的平台名稱 (Linux,Windows,OS X,等等)。
-
referrer
()¶ Returns: 偵測到的來源網址或是空字串 Return type: string 假如使用者是從其它網站造訪,通常你可以這樣子來檢查:
if ($this->agent->is_referral()) { echo $this->agent->referrer(); }
-
agent_string
()¶ Returns: 完整的使用者代理(user agent)字串或是空字串 Return type: string 回傳完整的使用者代理(user agent)資訊。通常會是類似這樣的字串:
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'])¶ Parameters: - $lang (string) – 語系代碼
Returns: 如果語系是被接受的,回傳 TRUE,否則回傳 FALSE
Return type: bool
讓你檢查使用者代理(user agent)是否接受某個語系,例如:
if ($this->agent->accept_lang('en')) { echo 'You accept English!'; }
Note
這個方法並不是非常可靠,因為某些瀏覽器並沒有提供語系資訊, 即使有提供,也不一定是精確的。
-
languages
()¶ Returns: 包含可接受的語系的陣列 Return type: array 回傳一個陣列,包含了使用者代理(user agent)支援的語系。
-
accept_charset
([$charset = 'utf-8'])¶ Parameters: - $charset (string) – 編碼名稱
Returns: 如果編碼是可接受的,回傳 TRUE,否則回傳 FALSE
Return type: bool
讓你檢查使用者代理(user agent)是否接受特定的編碼,例如:
if ($this->agent->accept_charset('utf-8')) { echo 'You browser supports UTF-8!'; }
Note
這個方法並不是非常可靠,因為某些瀏覽器並沒有提供編碼資訊, 即使有提供,也不一定是精確的。
-
charsets
()¶ Returns: 包含可接受的編碼的陣列 Return type: array 回傳一個陣列,包含了使用者代理(user agent)支援的編碼。
-
parse
($string)¶ Parameters: - $string (string) – 一個客製的使用者代理(user agent)字串
Return type: void
分析一個客製的使用者代理(user agent)字串,而不是目前訪客使用的那一個。
-