Определение браузера посетителя сайта на PHP
Для сбора внутренней статистики я написал простую функцию для определения браузеров посетителей сайта. За несколько месяцев активной "дрессировки" в нее были добавлены сигнатуры практически всех популярных браузеров, и вот уже достаточно длительное время она не обновляется. Информация берется из переменной окружения HTTP_USER_AGENT, но так как строка идентификации браузера формируется на стороне пользователя, то она может быть легко подделана. Например, при помощи расширения User Agent Switcher для браузера Firefox или какого-нибудь локального прокси-сервера. Поэтому 100% достоверной эту информацию считать никак нельзя. Но для подавляющего большинства случаев ее будет вполне достаточно. Функция возвращает строку с названием браузера и его версией типа Internet Explorer 6.0, Mozilla Firefox 3.0.14, или же Unknown, если браузер определить не удалось.Code (PHP) : Убрать нумерацию
- //-------------------------------------------------------------------
- // Функция определения браузера по данным поля User-Agent
- //-------------------------------------------------------------------
- function GetUserAgent() {
- // Получить переменную окружения
- $str=getenv('HTTP_USER_AGENT');
- // Попытаться определить известные браузеры по сигнатурам
- if (strpos($str,"Avant Browser",0)!==false) {
- return "Avant Browser";
- }
- elseif (strpos($str,"Acoo Browser",0)!==false) {
- return "Acoo Browser";
- }
- elseif (eregi("Iron/([0-9a-z\.]*)",$str,$pocket)) {
- return "SRWare Iron ".$pocket[1];
- }
- elseif (eregi("Chrome/([0-9a-z\.]*)",$str,$pocket)) {
- return "Google Chrome ".$pocket[1];
- }
- elseif (eregi("(Maxthon|NetCaptor)( [0-9a-z\.]*)?",$str,$pocket)) {
- return $pocket[1].$pocket[2];
- }
- elseif (strpos($str,"MyIE2",0)!==false) {
- return "MyIE2";
- }
- elseif (eregi("(NetFront|K-Meleon|Netscape|Galeon|Epiphany|Konqueror|".
- "Safari|Opera Mini)/([0-9a-z\.]*)",$str,$pocket)) {
- return $pocket[1]." ".$pocket[2];
- }
- elseif (eregi("Opera[/ ]([0-9a-z\.]*)",$str,$pocket)) {
- return "Opera ".$pocket[1];
- }
- elseif (eregi("Orca/([ 0-9a-z\.]*)",$str,$pocket)) {
- return "Orca Browser ".$pocket[1];
- }
- elseif (eregi("(SeaMonkey|Firefox|GranParadiso|Minefield|".
- "Shiretoko)/([0-9a-z\.]*)",$str,$pocket)) {
- return "Mozilla ".$pocket[1]." ".$pocket[2];
- }
- elseif (eregi("rv:([0-9a-z\.]*)",$str,$pocket) &&
- strpos($str,"Mozilla/",0)!==false) {
- return "Mozilla ".$pocket[1];
- }
- elseif (eregi("Lynx/([0-9a-z\.]*)",$str,$pocket)) {
- return "Lynx ".$pocket[1];
- }
- elseif (eregi("MSIE ([0-9a-z\.]*)",$str,$pocket)) {
- return "Internet Explorer ".$pocket[1];
- }
- else {
- // Это какой-то неизвестный браузер
- return "Unknown";
- }
- }
Просмотров: 19516 | Комментариев: 16
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
netu
(01.10.2012 в 23:20):
а теперь eregi меняем на preg_match :)
Евген
(07.04.2012 в 22:09):
Код - то что надо.
Алекс
(06.01.2012 в 03:35):
JhonTrade, спасибо, действительно ваш класс удобнее)
JhonTrade
(02.01.2012 в 22:32):
А я в своих проектах использую этот класс
http://intsystem.org/141/user-browser-detect/
http://intsystem.org/141/user-browser-detect/
Дмитрий
(22.12.2011 в 20:29):
Огромное спасибо за код! Очень помогло =)
Виталий
(13.11.2011 в 22:16):
Круто, супер, ваще класс.
Спасибо
Спасибо
Grafe
(14.12.2010 в 14:21):
спасибо, чувак)) алсо, сигнатура про проггера зарабатывает 1000 очков))
Евгений
(09.10.2010 в 23:25):
Спасибо.
IE - в топку.
IE - в топку.
Роман
(13.08.2010 в 16:20):
спасибо, помогло
теперь на страници блоки выводят разный контент в зависимости от браузера :)
теперь на страници блоки выводят разный контент в зависимости от браузера :)
Александр
(07.07.2010 в 00:14):
Спасибо за функцию. Очень пригодилась. IE ниже 7 не просто глючный, а ужасно. Наверное худший браузер в мире.
Евгений
(06.07.2010 в 09:16):
Спасибо!
Dragon
(08.05.2010 в 11:06):
Спасибо! Всё отлично работает! Теперь для глючного IE загружается страница с упрощённым дизайном, ато обычную он закосячивал
Андрей
(05.02.2010 в 14:33):
Спасибо. Коротко, понятно и работает.
MaxIkar
(16.11.2009 в 11:30):
Да, на шаред, увы, не прокатит :(
ManHunter
(16.11.2009 в 11:12):
Ага, это если резвишься на своем серваке и есть доступ к php.ini
MaxIkar
(16.11.2009 в 11:01):
http://php.net/get_browser
Предпочитаю стандартную функцию, т.к. можно обновлять browscap.ini и получать свежую инфу о новых версиях браузеров
Предпочитаю стандартную функцию, т.к. можно обновлять browscap.ini и получать свежую инфу о новых версиях браузеров
Добавить комментарий
Заполните форму для добавления комментария