PHP: [закройте] имя браузера

6
задан soupagain 4 February 2010 в 13:00
поделиться

3 ответа

if (strpos($_SERVER['HTTP_USER_AGENT'], '(compatible; MSIE ')!==FALSE) {
    ...ie specific...
}

Но! Не надо!

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

  • браузеры и другие пользовательские агенты, которые лгут о том, кто они такие, или полностью удаляют заголовок пользовательского агента, или вообще затрудняют отличить настоящий браузер от текста заголовка. . Например, указанное выше правило также обнаружит Opera, когда она подделывает IE, и IEMobile (Windows Mobile), что может вам понадобиться, а может и нет, поскольку это совсем другой браузер, чем настольный IE.

  • Если вы различаете пользовательский агент на стороне сервера, вы должны вернуть в ответе заголовок Vary: User-Agent , в противном случае прокси-серверы могут кэшировать версию страницы и возвращать ее в другие браузеры, которые не подходят. Однако включение этого заголовка имеет побочный эффект, заключающийся в нарушении кеширования в IE.

В зависимости от того, чего вы пытаетесь достичь, почти всегда есть гораздо лучший способ справиться с различиями между IE и другими браузерами на стороне клиента, используя хаки CSS, JScript или условные комментарии .Какова реальная цель обнаружения IE в вашем случае?

16
ответ дан 8 December 2019 в 02:17
поделиться

$ _ SERVER ['HTTP_USER_AGENT']

7
ответ дан 8 December 2019 в 02:17
поделиться
<?php
var_dump($_SERVER['HTTP_USER_AGENT']);
var_dump(get_browser(null, true));
?>

Печать:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3

Array
(
    [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$
    [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*
    [parent] => Firefox 0.9
    [platform] => WinXP
    [browser] => Firefox
    [version] => 0.9
    [majorver] => 0
    [minorver] => 9
    [cssversion] => 2
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] => 1
    [backgroundsounds] =>
    [vbscript] =>
    [javascript] => 1
    [javaapplets] => 1
    [activexcontrols] =>
    [cdf] =>
    [aol] =>
    [beta] => 1
    [win16] =>
    [crawler] =>
    [stripper] =>
    [wap] =>
    [netclr] =>
)
8
ответ дан 8 December 2019 в 02:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: