CodeIgniter 用戶代理類

2018-07-21 15:40 更新

用戶代理類

用戶代理(User Agent)類提供了一些方法來(lái)幫助你識(shí)別正在訪問(wèn)你的站點(diǎn)的瀏覽器、 移動(dòng)設(shè)備或機(jī)器人的信息。另外,你還可以通過(guò)它獲取 referrer 信息,以及 支持的語(yǔ)言和字符集信息。

使用用戶代理類

初始化類

正如 CodeIgniter 中的其他類一樣,在你的控制器中使用 $this->load->library() 方法來(lái)初始化用戶代理類:

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

初始化之后,用戶代理類的對(duì)象就可以這樣訪問(wèn):

$this->agent

用戶代理的定義

用戶代理的名稱定義在 application/config/user_agents.php 配置文件中。 你也可以根據(jù)需要向相應(yīng)的數(shù)組中添加你自己的用戶代理。

例子

當(dāng)用戶代理類初始化之后,它會(huì)嘗試判斷正在訪問(wèn)你的站點(diǎn)的是 Web 瀏覽器,還是移動(dòng)設(shè)備, 或者是機(jī)器人。它還可以獲取平臺(tái)的相關(guān)信息。

$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.)

類參考

classCI_User_agent

is_browser([$key = NULL])

參數(shù):

  • $key (string) -- Optional browser name

返回: TRUE if the user agent is a (specified) browser, FALSE if not

返回類型: bool

判斷用戶代理是否為某個(gè)已知的 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.';
}

注解

這個(gè)例子中的 "Safari" 字符串是配置文件中定義的 browser 數(shù)組的一個(gè)元素,你可以在 application/config/user_agents.php 文件中找到它,如果需要的話,你可以對(duì)其進(jìn)行添加或修改。

is_mobile([$key = NULL])

參數(shù):

  • $key (string) -- Optional mobile device name

返回: TRUE if the user agent is a (specified) mobile device, FALSE if not

返回類型: bool

判斷用戶代理是否為某個(gè)已知的移動(dòng)設(shè)備,返回布爾值 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])

參數(shù):

  • $key (string) -- Optional robot name

返回: TRUE if the user agent is a (specified) robot, FALSE if not

返回類型: bool

判斷用戶代理是否為某個(gè)已知的機(jī)器人,返回布爾值 TRUE 或 FALSE 。

注解

用戶代理類只定義了一些常見(jiàn)的機(jī)器人,它并不是完整的機(jī)器人列表,因?yàn)榭赡艽嬖谏习賯€(gè)不同的機(jī)器人, 遍歷這個(gè)列表效率會(huì)很低。如果你發(fā)現(xiàn)某個(gè)機(jī)器人經(jīng)常訪問(wèn)你的站點(diǎn),并且它不在這個(gè)列表中,你可以將其添加到文件 application/config/user_agents.php 中。

is_referral()

返回: TRUE if the user agent is a referral, FALSE if not
返回類型: bool

判斷用戶代理是否為從另一個(gè)網(wǎng)站跳過(guò)來(lái)的(Referer 為另一個(gè)網(wǎng)站),返回布爾值 TRUE 或 FALSE 。

browser()

返回: Detected browser or an empty string
返回類型: string

返回當(dāng)前正在瀏覽你的站點(diǎn)的瀏覽器名稱。

version()

返回: Detected browser version or an empty string
返回類型: string

返回當(dāng)前正在瀏覽你的站點(diǎn)的瀏覽器版本號(hào)。

mobile()

返回: Detected mobile device brand or an empty string
返回類型: string

返回當(dāng)前正在瀏覽你的站點(diǎn)的移動(dòng)設(shè)備名稱。

robot()

返回: Detected robot name or an empty string
返回類型: string

返回當(dāng)前正在瀏覽你的站點(diǎn)的機(jī)器人名稱。

platform()

返回: Detected operating system or an empty string
返回類型: string

返回當(dāng)前正在瀏覽你的站點(diǎn)的平臺(tái)(Linux、Windows、OSX 等)。

referrer()

返回: Detected referrer or an empty string
返回類型: string

如果用戶代理引用了另一個(gè)站點(diǎn),返回 referrer 。一般你會(huì)像下面這樣做:

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'])

參數(shù):

  • $lang (string) -- Language key

返回: TRUE if provided language is accepted, FALSE if not

返回類型: bool

判斷用戶代理是否支持某個(gè)語(yǔ)言。例如:

if ($this->agent->accept_lang('en'))
{
    echo 'You accept English!';
}

注解

這個(gè)方法一般不太可靠,因?yàn)橛行g覽器并不提供語(yǔ)言信息,甚至在那些提供了語(yǔ)言信息的瀏覽器中,也并不一定準(zhǔn)確。

languages()

返回: An array list of accepted languages
返回類型: array

返回一個(gè)數(shù)組,包含用戶代理支持的所有語(yǔ)言。

accept_charset([$charset = 'utf-8'])

參數(shù):

  • $charset (string) -- Character set

返回: TRUE if the character set is accepted, FALSE if not

返回類型: bool

判斷用戶代理是否支持某個(gè)字符集。例如:

if ($this->agent->accept_charset('utf-8'))
{
    echo 'You browser supports UTF-8!';
}

注解

這個(gè)方法一般不太可靠,因?yàn)橛行g覽器并不提供字符集信息,甚至在那些提供了字符集信息的瀏覽器中,也并不一定準(zhǔn)確。

charsets()

返回: An array list of accepted character sets
返回類型: array

返回一個(gè)數(shù)組,包含用戶代理支持的所有字符集。

parse($string)

參數(shù):

  • $string (string) -- A custom user-agent string

返回類型: void

解析一個(gè)自定義的用戶代理字符串,而不是當(dāng)前正在訪問(wèn)站點(diǎn)的用戶代理。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)