PHP – отображение сообщений определенным браузерам

Я искал это, и все, что я нахожу, намного больше, чем мне нужно. Раньше я делал это в JavaScript, но я бы предпочел использовать PHP. Как я могу показывать сообщение своим посетителям, в зависимости от того, какой браузер они используют?

Пример:

Пользователь IE увидит: «Вы используете Internet Explorer»

Пользователь Firefox увидит: «Вы используете Mozilla Firefox»

Я не совсем уверен, есть ли другие основные браузеры, кроме IE, Firefox, Chrome, Safari и Opera. Но я, по крайней мере, хотел бы иметь сообщение, адресованное каждому из этих браузеров в отдельности. Спасибо.

    Чтобы определить сервер пользователя на стороне пользователя, вам придется $_SERVER['HTTP_USER_AGENT'] переменную $_SERVER['HTTP_USER_AGENT']

    … Или, наверное, лучше использовать функцию get_browser – просто обратите внимание, что вам нужно будет что-то настроить в php.ini, или вы получите такое предупреждение:

     Warning: get_browser() [function.get-browser]: browscap ini directive not set 

    Как и на странице руководства PHP:

    Примечание. Чтобы это работало, ваш параметр настройки браузера в php.ini должен указывать на правильное расположение файла browscap.ini в вашей системе. browsercap.ini не связан с PHP, но здесь вы можете найти обновленный файл php_browscap.ini .

    Хотя browsercap.ini содержит информацию о многих браузерах, он использует обновления пользователей, чтобы поддерживать текущую базу данных. Формат файла довольно понятен.

    После загрузки этого файла и добавления этой строки в php.ini:

     browscap = /home/squale/developpement/tests/temp/php_browscap.ini 

    Следующая часть кода:

     var_dump(get_browser(null, true)); 

    Дает мне :

     array 'browser_name_regex' => string '^mozilla/5\.0 (x11; .*linux.*; .*rv:1\.9.*) gecko/.*$' (length=53) 'browser_name_pattern' => string 'Mozilla/5.0 (X11; *Linux*; *rv:1.9*) Gecko/*' (length=44) 'parent' => string 'Mozilla 1.9' (length=11) 'platform' => string 'Linux' (length=5) 'browser' => string 'Mozilla' (length=7) 'version' => string '1.9' (length=3) 'majorver' => string '1' (length=1) 'minorver' => string '9' (length=1) 'alpha' => string '1' (length=1) 'frames' => string '1' (length=1) 'iframes' => string '1' (length=1) 'tables' => string '1' (length=1) 'cookies' => string '1' (length=1) 'javaapplets' => string '1' (length=1) 'javascript' => string '1' (length=1) 'cssversion' => string '2' (length=1) 'supportscss' => string '1' (length=1) 'beta' => string '' (length=0) 'win16' => string '' (length=0) 'win32' => string '' (length=0) 'win64' => string '' (length=0) 'backgroundsounds' => string '' (length=0) 'cdf' => string '' (length=0) 'vbscript' => string '' (length=0) 'activexcontrols' => string '' (length=0) 'isbanned' => string '' (length=0) 'ismobiledevice' => string '' (length=0) 'issyndicationreader' => string '' (length=0) 'crawler' => string '' (length=0) 'aol' => string '' (length=0) 'aolversion' => string '0' (length=1) 

    на firefox 3.5; а также :

     array 'browser_name_regex' => string '^.*$' (length=4) 'browser_name_pattern' => string '*' (length=1) 'browser' => string 'Default Browser' (length=15) 'version' => string '0' (length=1) 'majorver' => string '0' (length=1) 'minorver' => string '0' (length=1) 'platform' => string 'unknown' (length=7) 'alpha' => string '' (length=0) .... 'aol' => string '' (length=0) 'aolversion' => string '0' (length=1) 

    В последней версии (4.0.203.2) google chrome для Linux – ну, учитывая, что это какая-то ночная сборка, я полагаю, что это нормально, что она не распознается …

    В качестве ссылки, вот его строка user-agent:

     string 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0' (length=109) 

    Это показывает, что get_ browser is хорош; но, возможно, не идеально подходит для какого-то передового тестового браузера – все равно, должен отлично работать с большинством «обычных» браузеров, я полагаю …

    Большинство клиентов отправляют строку агента пользователя, и вы можете использовать get_browser для «перевода» этой строки во что-то более «информативное».
    Но клиент hte может отправлять любую нужную строку, например, операционные браузеры, которые идентифицируют себя как интернет-проводник.

    Я думаю, что единственный способ обнаружить браузер в PHP – от агента пользователя, от HTTP_USER_AGENT.

    Или используя функцию PHP get_browser () -> http://us3.php.net/function.get-browser

     <? PHP
       $ browser = get_browser ();
       echo «Вы используете». $ browser ['browser'];
     ?>
    

    больше информации на http://www.php.net/function.get-browser

    вы можете получить файл browscap.ini здесь http://browsers.garykeith.com/downloads.asp

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

    вы должны прибегать к стороне клиента в сочетании с серверной частью, существует много библиотек jscript, которые могут это сделать, например, текст ссылки