Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

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

16.11.2009 | Категория: Web-мастеру и не только | Автор: ManHunter
Для сбора внутренней статистики я написал простую функцию для определения браузеров посетителей сайта. За несколько месяцев активной "дрессировки" в нее были добавлены сигнатуры практически всех популярных браузеров, и вот уже достаточно длительное время она не обновляется. Информация берется из переменной окружения HTTP_USER_AGENT, но так как строка идентификации браузера формируется на стороне пользователя, то она может быть легко подделана. Например, при помощи расширения User Agent Switcher для браузера Firefox или какого-нибудь локального прокси-сервера. Поэтому 100% достоверной эту информацию считать никак нельзя. Но для подавляющего большинства случаев ее будет вполне достаточно. Функция возвращает строку с названием браузера и его версией типа Internet Explorer 6.0, Mozilla Firefox 3.0.14, или же Unknown, если браузер определить не удалось.
  1. //-------------------------------------------------------------------
  2. // Функция определения браузера по данным поля User-Agent
  3. //-------------------------------------------------------------------
  4. function GetUserAgent() {
  5.   // Получить переменную окружения
  6.   $str=getenv('HTTP_USER_AGENT');
  7.   // Попытаться определить известные браузеры по сигнатурам
  8.   if (strpos($str,"Avant Browser",0)!==false) {
  9.     return "Avant Browser";
  10.   }
  11.   elseif (strpos($str,"Acoo Browser",0)!==false) {
  12.     return "Acoo Browser";
  13.   }
  14.   elseif (eregi("Iron/([0-9a-z\.]*)",$str,$pocket)) {
  15.     return "SRWare Iron ".$pocket[1];
  16.   }
  17.   elseif (eregi("Chrome/([0-9a-z\.]*)",$str,$pocket)) {
  18.     return "Google Chrome ".$pocket[1];
  19.   }
  20.   elseif (eregi("(Maxthon|NetCaptor)( [0-9a-z\.]*)?",$str,$pocket)) {
  21.     return $pocket[1].$pocket[2];
  22.   }
  23.   elseif (strpos($str,"MyIE2",0)!==false) {
  24.     return "MyIE2";
  25.   }
  26.   elseif (eregi("(NetFront|K-Meleon|Netscape|Galeon|Epiphany|Konqueror|".
  27.           "Safari|Opera Mini)/([0-9a-z\.]*)",$str,$pocket)) {
  28.     return $pocket[1]." ".$pocket[2];
  29.   }
  30.   elseif (eregi("Opera[/ ]([0-9a-z\.]*)",$str,$pocket)) {
  31.     return "Opera ".$pocket[1];
  32.   }
  33.   elseif (eregi("Orca/([ 0-9a-z\.]*)",$str,$pocket)) {
  34.     return "Orca Browser ".$pocket[1];
  35.   }
  36.   elseif (eregi("(SeaMonkey|Firefox|GranParadiso|Minefield|".
  37.           "Shiretoko)/([0-9a-z\.]*)",$str,$pocket)) {
  38.     return "Mozilla ".$pocket[1]." ".$pocket[2];
  39.   }
  40.   elseif (eregi("rv:([0-9a-z\.]*)",$str,$pocket) &&
  41.           strpos($str,"Mozilla/",0)!==false) {
  42.     return "Mozilla ".$pocket[1];
  43.   }
  44.   elseif (eregi("Lynx/([0-9a-z\.]*)",$str,$pocket)) {
  45.     return "Lynx ".$pocket[1];
  46.   }
  47.   elseif (eregi("MSIE ([0-9a-z\.]*)",$str,$pocket)) {
  48.     return "Internet Explorer ".$pocket[1];
  49.   }
  50.   else {
  51.     // Это какой-то неизвестный браузер
  52.     return "Unknown";
  53.   }
  54. }
Кроме статистики определение браузера посетителя можно использовать для переадресации или выдачи определенных страниц сайта, показа целевых информационных блоков, подгонки стилей или дизайна и т.п. При необходимости функцию можно легко расширить собственными сигнатурами, например, добавить определение поисковых роботов. Для определения браузеров мобильных устройств используется отдельный скрипт.

Просмотров: 18445 | Комментариев: 16

Internet Explorer 8 и мета-тег X-UA-Compatible

23.05.2009 | Категория: Web-мастеру и не только | Автор: ManHunter
С выходом финальной версии Microsoft Internet Explorer 8 web-мастерам добавилось головной боли из-за совместимости верстки под новый браузер. К счастью, в IE8 введены официально документированные режимы совместимости со старыми версиями Internet Explorer, по официальной версии "предназначенные для упрощения перехода с устаревших стандартов на новые". Говоря простым языком, пока web-мастера перекраивают свои сайты под IE8, для пользователей с новым браузером они могут временно поставить на страницы следующий мета-тег:
  1. <meta http-equiv="X-UA-Compatible" content="IE=7" />
Этот тег указывает браузеру Internet Explorer 8, что страницу надо отображать так же, как в Internet Explorer 7, соответственно, значение мета-тега IE=6 (значение в документации не описано, но при этом срабатывает правильно) и IE=5 даст команду отображать страницу в режиме совместимости с Internet Explorer 6 и 5. Ключевое слово IE=EmulateIE7 указывает браузеру, что при отображении страницы надо использовать настройки из директивы <!DOCTYPE>. Причем рендеринг страницы выполняется действительно с особенностями указанных версий браузеров, в этом можно убедиться на различных хаках CSS, свойственных конкретной версии IE. Если указать значение IE=8, то страница будет отображаться, как пишут сами авторы, "с наивысшим уровнем поддержки отраслевых стандартов, включая Спецификацию каскадных таблиц стилей (CSS) W3C уровня 2.1 и W3C Selectors API, а также ограниченную поддержку Спецификации каскадных таблиц стилей (CSS) W3C уровня 3 (рабочий проект)", подробнее о всех доступных значениях мета-тега X-UA-Compatible можно прочитать в официальной документации.

Обратите внимание, что мета-тег X-UA-Compatible должен быть помещен в HEAD страницы самым первым по счету, если его поставить после любого другого мета-тега, например, после иконки или заголовка страницы, то он будет просто проигнорирован. Не забывайте про эту особенность, когда будете верстать свой сайт. Как вариант, мета-тег X-UA-Compatible можно использовать для проверки отображения сайта под разными версиями Internet Explorer, не устанавливая сами браузеры, а имея только один установленный IE8.

Просмотров: 9054 | Комментариев: 4

Использование OpenSearch для поиска по сайту

10.04.2009 | Категория: Web-мастеру и не только | Автор: ManHunter
В большинстве современных браузеров есть специальное окно поиска, где вы можете производить поиск по различным сайтам. В список поисковых систем можно добавлять собственные ресурсы. Это делается по технологии OpenSearch, которая и описывает поисковый механизм вашего сайта. Чтобы пользователь мог добавить ваш сайт в список своих поисковых систем, вам требуется сделать всего лишь два простых действия.

Сперва надо создать файл-описание поисковой системы вашего сайта. Вот примерный шаблон такого файла:
  1. <?xml version="1.0" encoding="windows-1251" ?>
  2. <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
  3.   <ShortName>Site Name</ShortName>
  4.   <Description>Site Name Search</Description>
  5.   <InputEncoding>windows-1251</InputEncoding>
  6.   <Contact>your_mail@domain</Contact>
  7.     <Image width="16" height="16">data:image/x-icon;base64,AAABAAEAE...AAAA</Image>
  8.   <Developer>Admin</Developer>
  9.   <Url type="text/html" method="GET"
  10.        template="http://site/search?q={searchTerms}&amp;do=action"/>
  11. </OpenSearchDescription>
Вы можете менять следующие поля: ShortName - краткое название сайта, не более 16 символов. Description - описание сайта, не более 1024 символов. InputEncoding - кодировка сайта. Contact - контактный ардес e-mail администратора сайта. Developer - имя или никнейм администратора сайта. Url - шаблон ссылки, которая формируется для обращения к странице поиска. Переменная {searchTerms} будет автоматически заменяться на строку, которую пользователь будет вводить в форму поиска браузера. В шаблоне она должна быть записана именно в таком виде. Image - иконка, которая будет отображаться рядом с названием вашего сайта. Она может быть двух типов: в виде ссылки на файл на сервере или в виде закодированных двоичных данных. Например:
  1. <Image height="16" width="16" type="image/x-icon">ссылка_на_иконку</Image>
или
  1. <Image height="16" width="16">data:image/x-icon;base64,AAABAAEAEAA...DAAA=</Image>
В этом случае данные представляют собой содержимое файла иконки, сконвертированное в текстовое представление по алгоритму base64. По возможности придерживайтесь стандартного размера иконки - 16х16 пикселов. Это минимально необходимый набор параметров для файла описания. Полный их список вы можете найти в официальной спецификации OpenSearch и в руководстве по созданию поисковых плагинов для Firefox.

Читать статью целиком »
Просмотров: 8243 | Комментариев: 5

Кроссбраузерное добавление страницы в закладки

25.11.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Кроссбраузерное добавление страницы в закладки реализуется с использованием JavaScript. Для добавления страницы в Избранное браузеров Internet Explorer и браузеров, работающих на движке IE, вызывается стандартный метод AddFavorite. Однако здесь есть одна важная деталь. Если страница IE открыта как embedded-объект в другом приложении, например в плагинах или при использовании компонентов для работы с html, то объект window.external присутствует, но его метод AddFavorite не срабатывает. Это наиболее частая ошибка разработчиков, которые просто копируют код друг у друга без его понимания и тестирования. Также большой ошибкой будет использование на своем сайте только одного этого способа.

Браузеры на движке Gecko, такие как Firefox, Netscape, K-Meleon и другие, имеют объект window.sidebar и метод для добавления addPanel. Третий параметр метода недокументирован и является необязательным, поэтому в скрипте заменяется просто пустой строкой. Обратите внимание, что по умолчанию ссылка добавляется не совсем в закладки, а в боковую панель браузера. Для добавления страницы в нужную папку закладок выберите ее в выпадающем меню. С версии 23 в Firefox не поддерживается метод addPanel, в этом случае надо использовать метод добавления Opera.

Для браузера Opera ссылка добавления в закладки должна иметь атрибут rel="sidebar". Но если этот атрибут ставить сразу по умолчанию, то некоторые браузеры типа Netscape будут отрабатывать функцию добавления в закладки дважды: первый раз через скрипт и второй раз через атрибут rel. Поэтому придется изменять атрибуты ссылки динамически, предварительно определив браузер проверкой типа объекта opera.

Если ни один из перечисленных способов не сработал, то не надо выдавать сообщение об ошибке или еще хуже, молча завершать выполнение скрипта. Будет гораздо правильнее показать пользователю доступный вариант решения задачи, например предложить вручную нажать комбинацию клавиш Ctrl+D.

Читать статью целиком »
Просмотров: 34414 | Комментариев: 89

Качаем с Яндекс.Народа без ввода контрольных цифр

07.09.2008 | Категория: Темная сторона Силы | Автор: ManHunter
Есть такой приятный почти во всех отношениях сервис - Яндекс.Народ, предоставляющий после регистрации неограниченное место для хранения файлов, закачку файлов до 5 гигабайт и еще много интересных условий. Но как на всех файлообменных сервисах для получения ссылки требуется сперва ввести некоторый числовой код для подтверждения что вы человек, а не программа для автоматического скачивания файлов. Конечно, для сотни файлов действительно можно воспользоваться и какой-нибудь автоматической программой с распознаванием цифрового кода, но для одного-двух файлов будет полезным следующий метод. Сразу небольшое уточнение: описанный метод только для браузеров на движке Gecko: Mozilla, Firefox, Flock и других, для остальных похожие решения придется искать вам самим. Но тут главное уловить сам принцип. Итак, вернемся к нашему Народу. При попытке скачать любой файл сервис выдает код и интересное сообщение:


Хотите скачивать файлы еще быстрее?
Установите новый Яндекс.Бар, и вам не понадобится вводить контрольные цифры.


Скачивать-то мы хотим, но не хочется ставить этого адварного трояна в свою систему. Желаете доказать его безопасность или полезность? Не тратьте зря время, мое мнение не изменится. Но наука требует жертв, поэтому скрипя зубами я его установил (не пытайтесь повторить ЭТО дома!!!). После перезапуска браузера наблюдается наличие панели инструментов этого "Бара", и как побочный эффект файлы действительно стали скачиваться без ввода контрольных цифр. Как же файлообменник узнает своего агента? Внимательно смотрим заголовки запроса.

Читать статью целиком »
Просмотров: 18325 | Комментариев: 23

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2021
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.11 сек. / MySQL: 3 (0.047 сек.) / Память: 4.75 Mb
Наверх