Как определить браузер пользователя, использующего PHP? - PullRequest
3 голосов
/ 17 апреля 2010

Как определить браузер пользователя, использующего PHP?

Так что, если браузер пользователя является IE, тогда переменная $ alert = "onbeforeunload", а если это не IE, например Firefox (else), то $ alert = "onload.

Помощь очень ценится.

Спасибо

Также обратите внимание, что я не могу установить browscap.ini на моем PHP-сервере.

Ответы [ 4 ]

2 голосов
/ 17 апреля 2010

Посмотрите, подходит ли вам этот код

<?php
function detect_ie(){
    return (sizeof(explode("MSIE",$_SERVER['HTTP_USER_AGENT'])) > 1);
}

if (detect_ie())
    $event = "onbeforeunload";
else
    $event = "onload";

?>
1 голос
/ 17 апреля 2010

Вы не можете. Не со 100% точностью. Лучший способ - проверить пользовательский агент, однако пользователь может не предоставлять его или подделывать, поэтому старайтесь не полагаться на него.

$ua = $_SERVER['HTTP_USER_AGENT'];

Если браузер IE, он должен (приблизительно) совпадать (где # - число)

Mozilla/#.0 (compatible;  MSIE #.##;

Для которого регулярное выражение будет что-то вроде

'~^Mozilla/[0-9]\.0 (compatible;\s+MSIE~i'

В качестве альтернативы вы можете просто проверить строку "MSIE", которая была бы проще и чуть менее строгой.

Но, как сказал @Michal, на странице руководства get_browser

есть и другие (лучшие) значения
0 голосов
/ 17 апреля 2010

Библиотеки Javascript намного лучше обнаруживают и обрабатывают различное поведение браузера. Просто позвольте зрелой библиотеке вроде jQuery справиться с этим, и все будет в порядке.

0 голосов
/ 17 апреля 2010

использование $_SERVER['HTTP_USER_AGENT']

Проверьте, содержит ли он "IE", за которым непосредственно следует число.

Я бы предпочел сделать это в самом javascript.

if (typeof window.onbeforeunload !== "undefined") window.onbeforeunload = myFunc;
else window.onunload = myFunc;
...