Класс агента пользователя (User Agent)
Класс агента пользователя предоставляет функции, которые помогают идентифицировать информацию о браузере, мобильном устройстве или роботе, посещающих ваш сайт. В дополнение вы можете получить информацию о реферере, а также о поддерживающемся языке и принимаемой кодировке.
Инициализация класса
Как и большинство других классов в CodeIgniter, класс агента пользователя инициализируется в вашем контроллере посредством функции $this->load->library:
$this->load->library('user_agent');
Загруженный объект класса доступен для использования как $this->agent
Определения агента пользователя
Определения имени агента пользователя находятся в конфигурационном файлеapplication/config/user_agents.php. Вы можете добавлять элементы для различных агентов при необходимости.
Пример
Когда класс агента пользователя инициализирован, он будет пытаться определить агент пользователя, посещающего сайт, и пытаться узнать, является ли он веб-браузером, мобильным устройством или роботом. Он также соберет информацию о платформе, если она доступна.
$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 = 'Неидентифицированный User Agent';
}
echo $agent;
echo $this->agent->platform(); // Информация о платформе (Windows, Linux, Mac, что-то еще)
Справка по функциям
$this->agent->is_browser()
Возвращает TRUE, если агент пользователя опознан как веб-браузер. В обратном случае FALSE.
if ($this->agent->is_browser('Safari'))
{
echo 'Вы используете Safari.';
}
else if ($this->agent->is_browser())
{
echo 'Вы используете браузер.';
}
Примечание: строка "Safari" в этом примере, это ключ массива в списке определений браузеров. Вы можете найти этот список в файле application/config/user_agents.php, если вы хотите добавить новые браузеры или изменить строки.
$this->agent->is_mobile()
Возвращает TRUE, если агент пользователя опознан как мобильное устройство.
if ($this->agent->is_mobile('iphone'))
{
$this->load->view('iphone/home');
}
else if ($this->agent->is_mobile())
{
$this->load->view('mobile/home');
}
else
{
$this->load->view('web/home');
}
$this->agent->is_robot()
Возвращает TRUE, если агент пользователя опознан как робот.
Примечание: Библиотека агента пользователя содержит только часто употребляемые определения роботов. Это не полный список ботов. Их сотни, поэтому поиск каждого из них может быть очень затратным. Если вы обнаружили, что какие-то боты, незарегистрированные в списке, часто посещают ваш сайт, вы можете добавить их в ваш файл application/config/user_agents.php.
$this->agent->is_referral()
Возвращает TRUE, если агент пользователя был направлен с другого сайта.
$this->agent->browser()
Возвращает строку, содержащую имя веб-браузера, через который просматривают ваш сайт.
$this->agent->version()
Возвращает строку, содержащую номер версии веб-браузера.
$this->agent->mobile()
Возвращает строку, содержащую имя мобильного устройства.
$this->agent->robot()
Возвращает строку, содержащую имя робота.
$this->agent->platform()
Возвращает строку, содержащую платформу, с которой просматривают ваш сайт (Linux, Windows, OS X и т.д.).
$this->agent->referrer()
Реферер, если агент пользователя пришел с другого сайта. Обычно вы будете проверять это так:
if ($this->agent->is_referral())
{
echo $this->agent->referrer();
}
$this->agent->agent_string()
Возвращает строку, содержащую полную строку агента пользователя. Обычно это будет что-то вроде этого:
Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.4) Gecko/20060613 Camino/1.0.2
$this->agent->accept_lang()
Позволяет вам определить, какой конкретный язык принимает агент пользователя. Пример:
if ($this->agent->accept_lang('en'))
{
echo 'Ваш язык английский!';
}
Примечание: Эта функция не очень надежна, так как некоторые браузеры не предоставляют эту инфорамцию, а некоторые предоставляют, но не очень аккуратно.
$this->agent->accept_charset()
Позволяет вам определить, какую конкретно кодировку принимает агент пользователя. Пример:
if ($this->agent->accept_charset('utf-8'))
{
echo 'Ваш браузер поддерживает UTF-8!';
}
Примечание: Эта функция обычно не очень надежна, так как некоторые браузеры не отправляют информацию о кодировке, а некоторые делают это не очень корректно.