Обнаружение браузеров текущей версии или лучшего PHP

#php #browser-detection

#php #обнаружение браузера

Вопрос:

Я ищу способ определить, использует ли пользователь определенные типы браузеров в своей системе. В этом примере я хочу иметь возможность обнаруживать:

  • IOS 5 или выше для iPhone или iPad
  • iOS 4 или ниже
  • Android
  • Safari и Chrome
  • Firefox
  • Internet Explorer

Единственное, что я знаю, как создать, — это обнаружить любую версию IE

 if(strpos($_SERVER['HTTP_USER_AGENT'], 'iOS 5_0') !== false) { }
  

Итак, что мне нужно, так это:

  • Как обнаружить браузеры
  • Как определить, является ли определенная версия более новой или более старой

Кто-то упоминал перед функцией get_browser, но я не понимаю, кому использовать этот ini-файл, и мне нужно хорошее объяснение, как это сделать, если это лучший подход.

Комментарии:

1. В руководстве get_browser() есть довольно хорошее объяснение и даже ссылка для скачивания на обновленный browscap.ini — однако для его использования вам нужен root-доступ к вашему компьютеру. У вас есть это или вы на общем хостинге?

2. Обнаружение браузера на стороне сервера подвержено ошибкам. Некоторые пользователи намеренно подделывают строку своего пользовательского агента, а некоторые прокси / брандмауэры / антивирусные продукты полностью удаляют ее; в таких случаях на стороне сервера может быть невозможно определить, какой браузер у пользователя.

3. Для большинства целей лучшим подходом является использование функции обнаружения на клиенте, чтобы определить, поддерживает ли текущий браузер пользователя данную функцию, которую вы хотите использовать. Для этого используйте такой инструмент, как Modernizr .

4. @Spudley modernizr уже установлен. Рассматриваемая функция -webkit-overflow-scrolling: touch; как бы я настроил Modernizr для этого

5. @Spudley Я не уверен, что согласен с обнаружением на стороне сервера… пользователи, которые подделывают строку своего пользовательского агента, должны ожидать, что сайты и приложения будут реагировать с неопределенным поведением, и я не знаю ни о каких крупных продуктах AV / proxy / firewall, которые его удаляют. Хотя вы всегда должны учитывать, что строка может быть подделана или неверна, я думаю, вы можете предположить, что для подавляющего большинства это не так.