2015-11-30 3 views
1

В моем проекте используется PHP для обнаружения браузера, но мои клиенты использовали IE11 и изменили агент пользователя на IE7. И моему клиенту требуется обнаружить IE11, а не IE7. IE 11Как обнаружить действительно IE при изменении пользовательского агента

Пожалуйста, помогите мне обнаружить действительно IE11

+0

Почему меняется ваш пользователь их пользователем строку агента в том, что в IE 7? – Sampson

+0

возможно, другая строка агента использования IE7. Я не знаю. – s7ven

+0

То, что пользователь сообщает, - * по дизайну *. Изменение ua-строки ** предполагается **, чтобы сервер считал, что пользователь находится в IE 7. Это в значительной степени для целей тестирования или для того, чтобы обойти плохо написанное обнюхивание браузером. У пользователя вряд ли будет какая-либо действительная причина для просмотра веб-страниц с открытыми инструментами разработчика, чтобы они могли использовать ложную ua-строку. – Sampson

ответ

0

Проверка с помощью JS

function checkIE() 
    { 
     var ieVr = -1; 
     if (navigator.appName == 'Microsoft Internet Explorer') 
     { 
      var agent = navigator.userAgent; 
      var exp = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); 
      if (exp.exec(agent) != null) 
       ieVr = parseFloat(RegExp.$1); 
     } 
     else if (navigator.appName == 'Netscape') 
     { 
      var agent = navigator.userAgent; 
      var exp = new RegExp("Trident/.*ieVr:([0-9]{1,}[\.0-9]{0,})"); 
      if (exp.exec(agent) != null) 
       ieVr = parseFloat(RegExp.$1); 
     } 
     return ieVr; 
    } 

В соответствии с Дагом в PHP

preg_match('/MSIE (.*?);/', $_SERVER['HTTP_USER_AGENT'], $matches); 
if(count($matches)<2){ 
    preg_match('/Trident\/\d{1,2}.\d{1,2}; rv:([0-9]*)/', $_SERVER['HTTP_USER_AGENT'], $matches); 
} 

if (count($matches)>1){ 
    //Then we're using IE 
    $version = $matches[1]; 

    switch(true) 
    { 
    case ($version<=8): 
     //IE 8 or under! 
    break; 

    case ($version==9 || $version==10): 
     //IE9 & IE10! 
    break; 

    case ($version==11): 
     //Version 11! 
    break; 

    default: 
     //You get the idea 
    } 
} 
+0

, но это JS, в PHP? – s7ven

+0

@phucnd проверить измененный ответ – rocky

Смежные вопросы