• Шаблоны для вашего сайта
  • Сделать сайт
  • Реклама
  • Berry CSS
  • Albireo Framework
  • Бесплатный HTML-курс
  • Telegram-канал
  • Обратная связь
MaxSite.org
О создании сайтов и не только
Создание сайтов под ключ →
Вход
×
или зарегистрироваться

Определение браузера Internet Explorer

PHPПросмотров: 48935Комментарии: 2824 апреля 2007 г.

Меня уже спрашивали, как сделать, чтобы на сайте отображался баннер «Загрузи нормальный браузер» только для пользователей Internet Explorer.

На самом деле все очень просто. Для этого я написал функцию maxsite_testIE().

function maxsite_testIE() {
	$user_agent = $_SERVER['HTTP_USER_AGENT'];
	$browserIE = false;
	if ( stristr($user_agent, 'MSIE 7.0') ) $browserIE = true; // IE7
	if ( stristr($user_agent, 'MSIE 6.0') ) $browserIE = true; // IE6
	if ( stristr($user_agent, 'MSIE 5.0') ) $browserIE = true; // IE5
	return $browserIE;
}

Эту функцию нужно прописать в любом месте, например в index.php.

После этого, в том месте, где вы хотите показать текст с призывом пользоваться FireFox (или Opera), пишем:

<?php
if ( maxsite_testIE() ) {
  echo '<a href="http://www.mozilla-europe.org/ru/products/firefox/">
  Не ущемляй себя!<br />
  Установи нормальный браузер!</a>';
}
?>

Текст и оформление делайте уже по своему вкусу.

Для экстремалов могу предложить вместо вывода текста, сделать редирект на сайт FireFox. ;) Я правда не уверен, что ваши посетители это оценят, зато фанаты FireFox будут в восторге:

<?php
if ( maxsite_testIE() ) {
  header("Location: http://www.mozilla-europe.org/ru/products/firefox/");
  exit;
}
?>

Гулять, так гулять! :)


Создание сайтов (Украина) →
О главном :)
Попробовал Linux
twitter.com facebook.com
Другие записи сайта
Работы по MF (майские). Праздничная скидка
Работы по MF (майские). Праздничная скидка
Шаблон проектирования Facade (Фасад)
Шаблон проектирования Facade (Фасад)
Лучшие программы для вебмастера
Лучшие программы для вебмастера
Шаблон MAX Bootes (MF)
Шаблон MAX Bootes (MF)
Albireo Framework
Albireo Framework
Шаблон Registry (Реестр)
Шаблон Registry (Реестр)

Комментариев: 28 RSS

1Ильдар Абдулин25-04-2007 07:08

А зачем извращаться?

Тем более ваша функция показывает баннер тем, у кого в браузерах стоит идентификация "а-ля ИЕ" (например, в старых версиях Оперы эта опция даже стояла по умолчанию)

Conditional comments прекрасно справляются с задачей

Это отобразится только в ослике ИА

(лишние пробелы удалить)

2Ильдар Абдулин25-04-2007 07:10

блин, все равно порезался код...

можно погуглить, инфы про Conditional comments выше крыши

3Максим25-04-2007 07:22

Приведите-ка пример редиректа с помощью Conditional comments? ;)

4Ильдар Абдулин25-04-2007 13:49

Максим:
25 апреля 2007 в 07:22
Приведите-ка пример редиректа с помощью Conditional comments?

в данном случае вопрос стоял не о редиректе, а о показе баннера для пользователей ИЕ

5Максим25-04-2007 14:56

Ну тогда приведите пример кода (хака), который покажет пользователям IE вышеприведенный текст со ссылкой на сайт FireFox. ;)

6s3m25-04-2007 15:47

помню был такой плагин, который не пускал на блог пользователей IE )) жосткий плагин, но между прочим идеи для него у меня были ))

7Ильдар Абдулин25-04-2007 17:17

2Максим:

читайте http://www.quirksmode.org/css/condcom.html


<!--[if IE]>
According to the conditional comment this is Internet Explorer<br />
<![endif]-->

8Ильдар Абдулин25-04-2007 17:21

код в комментах все равно режется

идите по ссылке в предыдушем сообщении - там прекрасно разжевано и с примерами

9Максим25-04-2007 18:00

Должны наверное знать, что для публикации html-кода нужно его преобразовывать в спецсимволы. Теперь по сути. Сию конструкцию понимает только IE, для других же браузеров это довольно жестокое издевательство над DOM. Кроме этого, в IE полно всяческих глюков, которые тоже можно считать "идентификацией" IE :razz:

10Ильдар Абдулин26-04-2007 07:33

комментарии - не издевательство над dom

а именно как комментарии и воспринимают другие браузеры conditional comments

и только IE их и понимает, что собственно и было нужно

отличие СС от прочих css-хаков в том, что они поддерживаются и, скорее всего, будут поддерживаться всеми версиями ie и как раз-таки не причиняют ни малейшего вреда при использовании в других браузерах

короче, Максим, вы не в теме

обсуждение закрыто

о преобразовании в спецсимволы - не знал, теперь буду

11Максим26-04-2007 09:01

Да, действительно, проверил: FireFox и Opera воспринимают этот код как комментарий. Может быть для небольших вставок он и годится. Для более серьезного кода я бы его не использовал, поскольку он всегда присутствует в html-странице, даже если и не отображается в нормальных браузерах. Мой способ куда более избирателен, поскольку добавляет код в страницу только для пользователей IE. Для пользователей других браузеров он вообще не генерируется и страница не содержит мусора специально для IE.

12Vsn26-04-2007 19:47

А про IE7 забыли :) Кстати, вот тут подумал, а может ли быть такое, что MSIE 6.0 будет не ровно, а скажем MSIE 6.5, такое вообще бывает? И еще хотелось, чтобы код работал не только для ИЕ, но и для оперы тож, так то оперу тож втопку, надо юзать файрфокс!

13Максим26-04-2007 21:02

Насчет дробной версии я не могу ничего сказать. Наверное тогда можно вместо 'MSIE 6.0' указать просто 'MSIE'.

Таким же образом делается определение для Оперы 'Opera' и FireFox'а - 'Firefox'. Любители IE, кстати, могут переправлять пользователей неIE, например на сайт M$ :smile:

ps Практическое применение определения браузера (для переключения css-стилей) см. в 9-м выпуске рассылки.

14Турист28-04-2007 16:26

будущее за фф

15Vedmak28-04-2007 23:10

Зачем изобретать велосипед, когда Conditional Comments работает годы и это официальный способ от Microsoft для опознания любой весрии Internet Explorer, начиная с 5.0. К тому же СС можно применять на любом типе страниц, а не только php.

16Кошка30-04-2007 19:58

Не понимаю такого фанатизма, я вот тоже пользуюсь FireFox, но он не панацея - когда, например нужно с вэбманями поработать через браузер - ничего кроме IE не получится использовать (можно полуторный FF, но после "издевательства" над ним при помощи плагина).

К тому же, мальчики, зачем навязывать свое мнение? Я вот пишу это сообщение с SONY VAIO PCG-4H2P, но я же не гноблю пользующих Rover'ы - личное дело каждого, что использовать.

Лучше бы написали плагин который определяет наличие Flash нужной версии и если флэш есть - выводится ролик, а если нет - картинка (скажем для шапки блога).:wink:

17simpson01-05-2007 01:23

Лучше бы написали плагин который определяет наличие Flash нужной версии и если флэш есть - выводится ролик, а если нет - картинка

такое решение, оформленное в Javascript, существует уже довольно давно. SWFObject называется.

18Delchyve21-05-2007 15:51

Максим, уже ИЕ 7-ой появился. Так что, думаю, будет уместно добавиь еще строчку :)

if ( stristr($user_agent, 'MSIE 7.0') ) $browserIE = true;

19simpson21-05-2007 21:03

может, лучше, наоборот, сократить искомую подстроку до "msie"? :)

20Delchyve22-05-2007 07:38

А с этого места можно поподробнее?

21simpson22-05-2007 10:34

if ( stristr($user_agent, 'msie') ) $browserIE = true;

22Maximark21-06-2007 09:50

Так определять браузер очень "просто"... OPERA может представиться как MSIE... поэтому надо чуть усложнить проверку

например чтобы убрать баг мерцания MSIE 6 document.execCommand("BackgroundImageCache", false, true);

в опере js потом будет работать некорректно... мягко сказать, поэтому вот код более точного определения:


function GetUserAgent($ua = null)
{
/**
* Default to the user agent that the browser sends
*/
if (is_null($ua)) {
$ua = $_SERVER['HTTP_USER_AGENT'];
}

$b = array();

/**
* Major and minor version numbers
*/
$b['is_major'] = intval(substr($ua, strpos($ua, 'Mozilla/') + 8));
$b['is_minor'] = substr($ua, strpos($ua, 'Mozilla/') + 8);
$b['is_minor'] = (int)substr($b['is_minor'], strpos($b['is_minor'], '.') + 1);;

/**
* Type of browser
*/
$b['is_ff'] = strpos($ua, 'Firefox') !== false;
$b['is_ie'] = (strpos($ua, 'MSIE') !== false && strpos($ua, 'Opera') === false);
$b['is_opera'] = strpos($ua, 'Opera') !== false;
$b['is_nn'] = (strpos($ua, 'Mozilla') !== false &&
strpos(strtolower($ua), 'spoofer') === false &&
strpos(strtolower($ua), 'webtv') === false &&
strpos(strtolower($ua), 'hotjava') === false &&
$b['is_opera'] === false &&
$b['is_ie'] === false) &&
$b['is_ff'] === false;
$b['is_konq'] = strpos($ua, 'Konqueror') !== false;

/**
* Operating system
*/
$b['is_win'] = strpos($ua, 'Win') !== false;
$b['is_mac'] = strpos($ua, 'Mac') !== false;
$b['is_nix'] = strpos($ua, 'X11') !== false;

/**
* Internet Ekplorer
*/
if ($b['is_ie'] AND !$b['is_opera']) {
$b['is_ie4'] = strpos($ua, 'MSIE 4.') !== false;
$b['is_ie5'] = strpos($ua, 'MSIE 5.') !== false;
$b['is_ie5_5'] = strpos($ua, 'MSIE 5.5') !== false;
$b['is_ie6'] = strpos($ua, 'MSIE 6.') !== false;
$b['is_ie7'] = strpos($ua, 'MSIE 7.') !== false;

/**
* Firefox
*/
} elseif ($b['is_ff']) {
$b['is_ff1'] = strpos($ua, 'Firefox/1') !== false;
$b['is_ff2'] = strpos($ua, 'Firefox/2') !== false;

/**
* Netscape Navigator
*/
} elseif ($b['is_nn']) {
$b['is_nn2'] = $b['is_major'] === 2;
$b['is_nn2up'] = $b['is_major'] >= 2;
$b['is_nn3'] = $b['is_nn2up'] && $b['is_major'] === 3;
$b['is_nn3up'] = $b['is_nn2up'] && $b['is_major'] >= 3;
$b['is_nn4'] = $b['is_nn3up'] && $b['is_major'] === 4;
$b['is_nn4up'] = $b['is_nn3up'] && $b['is_major'] >= 4;
$b['is_nn6'] = $b['is_nn4up'] && $b['is_major'] === 5;
$b['is_nn6up'] = $b['is_nn4up'] && $b['is_major'] >= 5;
$b['is_nn8'] = $b['is_nn6up'] && (bool)strpos($ua, 'Netscape/8');

/**
* Opera
*/
} elseif ($b['is_opera']) {
$b['is_opera5'] = strpos($ua, 'Opera/5') !== false;
$b['is_opera6'] = strpos($ua, 'Opera/6') !== false;
$b['is_opera7'] = strpos($ua, 'Opera/7') !== false;
$b['is_opera8'] = strpos($ua, 'Opera/8') !== false;
$b['is_opera9'] = strpos($ua, 'Opera/9') !== false;

/**
* Other. Some of the more common robots etc...
*/
} else {
$b['is_google'] = strpos($ua, 'Mediapartners-Google') !== false;
$b['is_googletb'] = strpos($ua, 'GoogleToolbar') !== false;
$b['is_ffg'] = strpos($ua, 'Feedfetcher-Google') !== false;
$b['is_googlebot'] = strpos($ua, 'Googlebot') !== false;

$b['is_newsgator'] = strpos($ua, 'NewsGatorOnline/') !== false;
$b['is_magpierss'] = strpos($ua, 'MagpieRSS') !== false;
$b['is_planetphp'] = strpos($ua, 'PlanetPHPAggregator') !== false;
$b['is_bloglines'] = strpos($ua, 'Bloglines') !== false;
$b['is_doubanbot'] = strpos($ua, 'Doubanbot') !== false;
$b['is_topix'] = strpos($ua, 'Topix.net') !== false;
$b['is_rssreader'] = strpos($ua, 'RssReader') !== false;
$b['is_nnw'] = strpos($ua, 'NetNewsWire') !== false;
$b['is_ngo'] = strpos($ua, 'NewsGatorOnline') !== false;
$b['is_gn'] = strpos($ua, 'GreatNews') !== false;
$b['is_rb'] = strpos($ua, 'RssBar') !== false;
}

/**
* Which version of windows?
*/
if ($b['is_win']) {
$b['is_98'] = strpos($ua, 'Windows 98') !== false;
$b['is_nt'] = strpos($ua, 'Windows NT 4.0') !== false;
$b['is_2000'] = strpos($ua, 'Windows NT 5.0') !== false;
$b['is_xp'] = strpos($ua, 'Windows NT 5.1') !== false;
$b['is_2003'] = strpos($ua, 'Windows NT 5.2') !== false;
$b['is_vista'] = strpos($ua, 'Windows NT 6.0') !== false;

/**
* Macs
*/
} elseif ($b['is_mac']) {
$b['is_osx'] = strpos($ua, 'OS X') !== false;

/**
* *Nix
*/
} elseif ($b['is_nix']) {
$b['is_fed'] = strpos($ua, 'Fedora/') !== false;
$b['is_ubuntu'] = strpos($ua, 'Ubuntu') !== false;
}

return $b;
}

23Cvetik15-10-2007 08:53

Понятного мало

24Ieronimus02-06-2008 21:22

Вроде бы сработало так: MSIE 5 (или 6, 7) просто первая цифра, которая должна быть определяющей для всех IE соответствующей версии.

25Alexpts02-01-2009 13:58

У Nox`а есть такй проект - http://nomsie.ru/

26Александр16-02-2009 13:22

Спасибочки )

27Дмитрий14-08-2011 19:05

Сделал Ушку себе, чтоб в сайдбаре появлялось сообщение с просьбой скачать другой браузер. И ссылки на загрузку) спасибо Макс)

28Приятный Собеседник16-09-2011 13:58

Для определения IE6 я использую такой сопсоб:

http://www.easy2code.com/ru/notes/view/opredelenie_ie6

Оставьте комментарий!

Комментарий будет опубликован после проверки. Вы соглашаетесь с правилами сайта.

(обязательно)

Навигация
  • Шаблоны для MaxSite CMS 22
  • jQuery и JavaScript 6
  • Java и Android 5
  • PHP/ООП 25
  • SQL 17
  • Albireo Framework 11
  • Berry CSS 7
  • CSS, HTML, LESS, SASS 23
  • PHP 37
  • Тайм-менеджмент 9
  • Софт 37
  • SEO 13
  • Git. GitHub 3
  • CodeIgniter 5
  • Landing Page 3
  • Alpine.js 14
  • Фильмы 2
  • Дневник 55

Вот здесь можно заказать создание сайта, шаблона или лендинга. Также вы можете выбрать готовые шаблоны для MaxSite CMS по небольшой цене. Также можно купить отдельные модули, компоненты для вашего сайта.

MaxSite.org
Как создать свой сайт

Услуги по созданию сайтов, блогов, лендингов
Обратная связь • Реклама на сайте
Карта сайта
Мои проекты
  • Шаблоны для вашего сайта
  • Заказать создание сайта
  • MaxSite CMS
  • Berry CSS (CSS Utilities)
  • Albireo Framework
  • UniCSS (Universal Atomic CSS)
  • Landing Page Framework
  • Бесплатные НТML-курсы
Ссылки
  • Telegram-канал
  • Github
  • Twitter
  • Telegram-бот
  • RSS
© MaxSite.org, 2006-2022. Работает на MaxSite CMS | Время: 0.3409 | SQL: 20 | Память: 4.7MB | Вход