Красносельский
Константин
Константинович

Компьютер и программы

Веб-дизайн

Справочники

Документация по CSS1

Настройка файла .htaccess

Коды ошибки http сервера

Подстановочные символы и регулярные выражения

Спецификация файла robots.txt

SSI – Server Side Includes

Таблица кодировки символов кириллицы

Нестандартные символы в HTML

Вторая таблица символов HTML

MIME Types (типы файлов)

 

Советы начинающим

Как в PHP поместить enum в массив

Советы начинающим Веб-дизайнерам: Что, где и зачем.

Правила плохого тона

WEB-уловки

Камень предкновения: верстка таблицами или блоками?

Рекомендации по разработке веб сайта

 

Анализ WEB-конъюнктуры. Создание лучшего сайта и его раскрутка.

Анализ WEB-конъюнктуры

Предисловие

Приручение поисковых машин

Уровень документа - все гениальное просто

Благоустройство нор для поисковых червей или как водить пауков по нашей паутине

Ускорение индексации сайта

Если гора не идет к Магомету

Индекс цитирования

Что это такое и с чем его едят

Приобретение веса в глазах общественности

Послесловие

Последние замечания по интернет-раскрутке

 

Приложения

А: «Рекомендации лучших пауководов»

Краткий комментарий.

Советы специалистов поисковой системы Rambler.

Использование файлов robots.txt.

Часто задаваемые вопросы.

Советы специалистов поисковой системы Aport.

Регистрация сайта в Апорте.

Советы специалистов поисковой системы Yandex.

Добавление страниц

Индексирование

Положение страницы на выдаче

Поиск со своей страницы

Ответы на часто задаваемые вопросы

 

Б: «1000 сверх-сайтов Рунета»

1000 сверх-сайтов Рунета

 

В: «Сто наиболее популярных поисковых слов»

Сто наиболее популярных поисковых слов

 

Г: «Где это сделать?»

Где это сделать?

 

Д: «Практическое руководство!!!»

Краткий комментарий.

Окна, ссылки и меню.

Ссылки и окна. Внешний вид и внутреннее содержание.

Организация ссылок. Всевозможные оглавления.

Если вам не нравятся фреймы, значит, вы не умеете их готовить.

Меню из выпадающих списков (javascript и CSS).

Многоуровневое раскрывающееся меню (javascript и CSS).

Работа с базами данных.

Обработка баз данных браузером посетителя

Обработка баз данных сервером (PHP)

Взаимодействие с посетителем

Отправка писем с веб-страницы.

Формы

Методы форм.

Создание на сайте PHP голосования.

Регистрация и контроль посетителей (PHP).

Интерактивность материала.

Создание гостевой книги на PHP.

Удаление записей из текстовых баз (PHP).

Заргузка файлов на сервер по HTTP-протоколу (PHP).

Разное.

Псевдослучайные элементы (PHP, javascript).

Точное определение имени и версии браузера с помощью JavaScript, SSI или PHP

Клоакинг и технология «Входных дверей».

Отложенное выполнение и выполнение с заданным интервалом (javascript)

Информация о размере, дате, собственные счетчики и протоколы посещений

 

 

 

Консультации

Экспорт и импорт новостей

PHP chmod – права доступа к файлам

WEB 2.0 – миф, или реальность?

Давно забытый AJAX

Способы хранения веб-страниц: документы FrontPage или базы данных

Как заработать на своем сайте?

FTP клиент, как настроить Total Commander

Знак собаки @ и подавление ошибок в PHP

AJAX

AJAX с точностью до наоборот, или как научить AJAX сохранять историю в браузере

 

Мониторинг веб сайтов и анализ поисковых запросов

Документация по Веб-дизайну

Желающим скачать PHP скрипт или JavaScript

 

Литература и поэзия

Гуманитарные науки

Мастерская

Хронология материалов

Обращение к посетителям

Скачать шрифты

Скачать рефераты

Создание web сайта на заказ

Создание веб сайтов (цены)

Веб-сайты, созданные мной (потенциальным заказчикам)

Полезные ссылки

Об авторе

Статистика сайта

 

Web На сайте

 

 

 

ТаблицейБлоками.

Приложение Д: JavaScript SSI PHP версия браузера, USER_AGENT

Последняя модификация: 10.08.2014 г

Страница загружена с адреса: http://webdesign.site3k.ru/conjuncture/append/d/browse.html

Моя студия веб-дизайна

Точное определение имени и версии браузера.

  1. Определение имени и версии браузера с помощью JavaScript
  2. Определение имени и версии браузера для браузеров без JavaScript и поисковых машин

Определение имени и версии браузера с помощью JavaScript

Все встречавшиеся мне рекомендации по определению версии браузера посетителя оказываются несостоятельными, поскольку не учитывают стремление некоторых браузеров выдавать себя за то, чем не являются. Например, широко распространенный браузер Опера, может выдавать себя либо за Интернет Експлорер, либо за Mozilla. Поэтому простое сравнение типа if (navigator.appName == "Netscape") не дает истинного ответа. Кроме того, поисковая машина:

Поэтому поиск строки MSIE или Mozilla в CGI, PHP и SSI директивах так же легко вводит в заблуждение.

Предлагаю более корректный способ определения имени и версии браузера:

<SCRIPT LANGUAGE="JavaScript"><!--
uaVers='' // uaVers может не определиться в Опере, так что, переменную приходится инициализировать, чтобы не было ошибок
if (window.navigator.userAgent.indexOf ("Opera") >= 0)
  {
   ua = 'Opera';
   uaVers=window.navigator.userAgent.substr(window.navigator.userAgent.indexOf("Opera")+6,4);
  }
else
if (window.navigator.userAgent.indexOf ("Gecko") >= 0) // (Mozilla, Netscape, FireFox)
  {        // Их врядли стоит разделять, так как их разделение – только попытка вдохнуть новую жизнь в одного и того же вымирающего динозавра
   ua = 'Netscape';
   uaVers=window.navigator.userAgent.substr(window.navigator.userAgent.indexOf("Gecko")+6,8)+ ' ('+ window.navigator.userAgent.substr(8,3) + ')';
  }
else
if (window.navigator.userAgent.indexOf ("MSIE") >= 0)
  {
   ua = 'Explorer';
   uaVers=window.navigator.userAgent.substr(window.navigator.userAgent.indexOf("MSIE")+5,3);
  }
else
   ua = window.navigator.appName; // Неизвестные мне браузеры
//--></SCRIPT> 

В результате, становится возможным точное определение имени и версии.

При необходимости, код можно подкорректировать. Например, Mozilla, Netscape и FireFox, наверняка можно отделить друг от друга (у меня сейчас из них только мазила и я не могу посмотреть, в чем их различие для JavaScript). Можно не определять для Gecko-производных браузеров версию Gecko, а брать только версию браузера (window.navigator.userAgent.substr(8,3)), можно превратить номер версии в число (uaVers=parseFloat(uaVers);), чтобы затем проверить соответствие версий минимальному требованию. Можно еще много чего.

Главное, на что я хотел обратить внимание, так это на то, что Опера может маскироваться бод другой браузер, а это может стать источником проблем.

В отличие от Gecko-производных браузеров, она работает именно так, как задано стандартами WWW (Gecko-производные браузеры странно ведут себя с некоторыми элементами HTML и вообще не признают части CSS-атрибутов). Если скрипт примет Оперу за Нетскейп и будет пытаться адаптировать страницу, которая и без того прекрасно отображалась, страница может исказиться.

С другой стороны, Опера несколько отстает от Эксплорера в интерпретации скриптов и, например, моя версия, не понимает window.showModalDialog и window.showModelessDialog, что может привести к проблемам при маскировке под Експлорер. Поэтому, иногда бывает важным определить не только совместимость с MSIE и версию Мазилы, с которой совместим тот или иной продукт, а определить собственное название данного продукта и его собственную версию.

Вот перечень всех свойств навигатора:

 

А вот результат работы предлагаемого мной скрипта:

Поэкспериментировав на разных браузерах, вы увидите, что скрипт дает более точную и удобочитаемую информацию, чем window.navigator.appCodeName, window.navigator.appName, window.navigator.appVersion и window.navigator.userAgent.

Определение имени и версии браузера для браузеров без JavaScript и поисковых машин

Определение браузера с помощью JavaScript бессильно, если браузер не поддерживает JavaScript или в поддерживающем его браузере отключено использование JavaScript. А такое явление может быть достаточно распространенным, так как в Internet Explorer на платформе Windows XP с ServisPack 2 все динамическое содержимое по умолчанию блокируется и неопытный пользователь не рискнет отключать блокировку. Что же касается поисковиков, то они вообще не обрабатывают скрипты. Для таких случаев, название и версию браузера требуется определять еще на сервере.

Определение имени и версии браузера используя SSI это можно сделать таким способом:

<!--#if expr="$HTTP_USER_AGENT=/Opera/" -->
<!--#set var="ua" value="Opera" -->
<!--#elif expr="$HTTP_USER_AGENT=/Gecko/" -->
<!--#set var="ua" value="Netscape" -->
<!--#elif expr="$HTTP_USER_AGENT=/Windows/" -->
<!--#set var="ua" value="Explorer" -->
<!--#else -->
<!--#set var="ua" value="$HTTP_USER_AGENT" -->
<!--#endif -->

Здесь так же используется поиск части строки (с учетом синтаксиса SSI). Искать подстроку «Windows», следует в последнюю очередь, так как другие браузеры тоже могут работать из Windows (но не поисковые машины).

Для вашего браузера, результат получается такой: Netscape

При этом опрелелить версию невозможно из-за ограниченности функций SSI. Файл с определением браузера с помощью SSI должен иметь расширение из числа обрабатываемых SSI-парсером.

Определение имени и версии браузера используя PHP это можно сделать таким способом:

<?php
if (strpos($HTTP_USER_AGENT,"Opera") !==false)
   {
     $ua="Opera";
     $uaVers = substr($HTTP_USER_AGENT,strpos($HTTP_USER_AGENT,"Opera")+6,4);
   }
elseif (strpos($HTTP_USER_AGENT,"Gecko") !==false)
   {
     $ua="Netscape";
     $uaVers = substr($HTTP_USER_AGENT,strpos($HTTP_USER_AGENT,"Mozilla")+8,3);
   }
elseif (strpos($HTTP_USER_AGENT,"Windows") !==false)
   {
     $ua="Explorer";
     $uaVers = substr($HTTP_USER_AGENT,strpos($HTTP_USER_AGENT,"MSIE")+5,3);
   }
else
   {
     $ua=$HTTP_USER_AGENT;
     $uaVers=""; 
   }
?>

Для вашего браузера, результат получается такой:

Файл с определением браузера с помощью PHP должен иметь расширение из числа обрабатываемых PHP-парсером или из числа обрабатываемых SSI-парсером и включать PHP-скрипт SSI-директивой <!--#include virtual="agent.php" -->

Для браузеров с отключенным JavaScript может оказаться полезным включение в страницу таких строк:

<SCRIPT LANGUAGE="JavaScript"><!--
document.write('<' + '!--');
//-->
</SCRIPT>
<p style="color:red">Если вы хотите, чтобы сайт выглядел нормально, включите JavaScript!
Для броузера Internet Explorer и Windows XP с сервис-паком 2, щелкните по панели безопасности правой кнопкой мыши, и в ее контекстном меню выберите пункт "Разрешить заблокированное содержимое..."
<SCRIPT LANGUAGE="JavaScript"><!--
document.write('--' + '>');
//-->
</SCRIPT>

Если скрипт не поддерживается, в тексте отобразится предупредительная строка. Если поддерживается, запущенные перед и после предупредительной строки скрипты ее закоментируют.

 

Комментарии к странице (всего 6)

 

 

 


На главную страницу сайта