PHP

Определение браузера посетителя сайта на PHP

16.11.2009 | Категория: Web-мастеру и не только | Автор: ManHunter
Для сбора внутренней статистики я написал простую функцию для определения браузеров посетителей сайта. За несколько месяцев активной "дрессировки" в нее были добавлены сигнатуры практически всех популярных браузеров, и вот уже достаточно длительное время она не обновляется. Информация берется из переменной окружения HTTP_USER_AGENT, но так как строка идентификации браузера формируется на стороне пользователя, то она может быть легко подделана. Например, при помощи расширения User Agent Switcher для браузера Firefox или какого-нибудь локального прокси-сервера. Поэтому 100% достоверной эту информацию считать никак нельзя. Но для подавляющего большинства случаев ее будет вполне достаточно. Функция возвращает строку с названием браузера и его версией типа Internet Explorer 6.0, Mozilla Firefox 3.0.14, или же Unknown, если браузер определить не удалось.
//-------------------------------------------------------------------
// Функция определения браузера по данным поля 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";
  }
}

Кроме статистики определение браузера посетителя можно использовать для переадресации или выдачи определенных страниц сайта, показа целевых информационных блоков, подгонки стилей или дизайна и т.п. При необходимости функцию можно легко расширить собственными сигнатурами, например, добавить определение поисковых роботов.
Теги:
браузер
Добавлено: 18 Сентября 2013 03:35:26 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...