get_browser () возвращает Chrome при использовании браузера Opera на вкладке Samsung Galaxy

Привет, я отслеживаю браузеры пользователей, которые посещают мой сайт с использованием browsecap.ini.

Ниже приведен код, который я использую

if(isset($message['HTTP_USER_AGENT'])){
$get_browser = get_browser($message['HTTP_USER_AGENT'], true);
if (!empty($get_browser)){
$str_values.='".mysql_real_escape_string($get_browser['comment'])."'

Но когда пользователи, использующие браузер Opera на вкладке Galaxy, отображаются как пользователи браузера Chrome

Кто-нибудь может мне помочь исправить эту иссе

P.S. — Я использую облегченную версию файла browsecap.ini.

1

Решение

Вы любезно предоставили мне пример UA-строки мобильного браузера Opera:

Mozilla / 5.0 (Linux;  Android 4.1.2; GT-P3100 Build / JZO54K) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 41.0.2272.81 Safari / 537.36 OPR / 28.0.1764.90386

и регулярное выражение возвращается get_browser() на этом UA есть:

$ ^ mozilla / 5.0 (. * linux.android.4.1.) applewebkit /.* (хтмл, как геккон). * хром / 41 ..сафари/.$

который не обнаружил браузер Opera вообще. Тем не менее, я нашел эту функцию, которую вы также можете запустить, чтобы получить имя браузера. Самая первая проверка для этого «OPR /«фрагмент строки UA.

При запуске с тестовым UA, предоставленным выше, выводом является «Opera».

<?php
function ExactBrowserName() {
$ExactBrowserNameUA=$_SERVER['HTTP_USER_AGENT'];

If (strpos(strtolower($ExactBrowserNameUA), "safari/") and strpos(strtolower($ExactBrowserNameUA), "opr/")) {
// OPERA
$ExactBrowserNameBR="Opera";
} ElseIf (strpos(strtolower($ExactBrowserNameUA), "safari/") and strpos(strtolower($ExactBrowserNameUA), "chrome/")) {
// CHROME
$ExactBrowserNameBR="Chrome";
} ElseIf (strpos(strtolower($ExactBrowserNameUA), "msie")) {
// INTERNET EXPLORER
$ExactBrowserNameBR="Internet Explorer";
} ElseIf (strpos(strtolower($ExactBrowserNameUA), "firefox/")) {
// FIREFOX
$ExactBrowserNameBR="Firefox";
} ElseIf (strpos(strtolower($ExactBrowserNameUA), "safari/") and strpos(strtolower($ExactBrowserNameUA), "opr/")==false and strpos(strtolower($ExactBrowserNameUA), "chrome/")==false) {
// SAFARI
$ExactBrowserNameBR="Safari";
} Else {
// OUT OF DATA
$ExactBrowserNameBR="OUT OF DATA";
};

return $ExactBrowserNameBR;
}
?>

Ref: Как получить точное имя и версию браузера?

1

Другие решения

Других решений пока нет …