saskozp 205 Posted July 17, 2016 Report Share Posted July 17, 2016 Подскажите рабочее решение на PHP , которое позволит запускать сайт только в браузере IE! Для всех остальных браузеров нужно выводить определенное сообщение. Заранее благодарен за любую помощь. Link to post Share on other sites
Administrators DevilStar 1179 Posted July 17, 2016 Administrators Report Share Posted July 17, 2016 https://www.drupal.org/node/1552190 Пример для ФФ $userAgent = $_SERVER['HTTP_USER_AGENT']; if(!preg_match('/Firefox/i',$userAgent)){ return FALSE; } return TRUE; Link to post Share on other sites
McFly 1 Posted July 17, 2016 Report Share Posted July 17, 2016 https://www.drupal.org/node/1552190 Пример для ФФ $userAgent = $_SERVER['HTTP_USER_AGENT']; if(!preg_match('/Firefox/i',$userAgent)){ return FALSE; } return TRUE; ага, только заголовки легко сменить, так что, если кому надо зайдет с любого бразуера) Link to post Share on other sites
saskozp 205 Posted July 17, 2016 Author Report Share Posted July 17, 2016 https://www.drupal.org/node/1552190 Пример для ФФ $userAgent = $_SERVER['HTTP_USER_AGENT']; if(!preg_match('/Firefox/i',$userAgent)){ return FALSE; } return TRUE; не срабатывает Link to post Share on other sites
saskozp 205 Posted July 22, 2016 Author Report Share Posted July 22, 2016 актуально, помогите кто в курсе Link to post Share on other sites
VIP campusboy 912 Posted July 22, 2016 VIP Report Share Posted July 22, 2016 Приветствую. Есть различные варианты решений, все они связаны с определением HTTP_USER_AGENT, по другому на уровне сервера не сделать. Вот варианты: 1) Использовать функцию get_browser, которая по умолчанию не входит в дистрибутив php; 2) На основе ветки обсуждений по функции выше, рекомендуют использовать скрипт UserAgentParser. 3) Также в комментариях к той функции человек написал свою функцию парсинга HTTP_USER_AGENT, усовершенствованный аналог get_browser по его словам, продублирую её код сюда: <?php function getBrowser() { $u_agent = $_SERVER['HTTP_USER_AGENT']; $bname = 'Unknown'; $platform = 'Unknown'; $version= ""; //First get the platform? if (preg_match('/linux/i', $u_agent)) { $platform = 'linux'; } elseif (preg_match('/macintosh|mac os x/i', $u_agent)) { $platform = 'mac'; } elseif (preg_match('/windows|win32/i', $u_agent)) { $platform = 'windows'; } // Next get the name of the useragent yes seperately and for good reason if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) { $bname = 'Internet Explorer'; $ub = "MSIE"; } elseif(preg_match('/Firefox/i',$u_agent)) { $bname = 'Mozilla Firefox'; $ub = "Firefox"; } elseif(preg_match('/Chrome/i',$u_agent)) { $bname = 'Google Chrome'; $ub = "Chrome"; } elseif(preg_match('/Safari/i',$u_agent)) { $bname = 'Apple Safari'; $ub = "Safari"; } elseif(preg_match('/Opera/i',$u_agent)) { $bname = 'Opera'; $ub = "Opera"; } elseif(preg_match('/Netscape/i',$u_agent)) { $bname = 'Netscape'; $ub = "Netscape"; } // finally get the correct version number $known = array('Version', $ub, 'other'); $pattern = '#(?<browser>' . join('|', $known) . ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#'; if (!preg_match_all($pattern, $u_agent, $matches)) { // we have no matching number just continue } // see how many we have $i = count($matches['browser']); if ($i != 1) { //we will have two since we are not using 'other' argument yet //see if version is before or after the name if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){ $version= $matches['version'][0]; } else { $version= $matches['version'][1]; } } else { $version= $matches['version'][0]; } // check if we have a number if ($version==null || $version=="") {$version="?";} return array( 'userAgent' => $u_agent, 'name' => $bname, 'version' => $version, 'platform' => $platform, 'pattern' => $pattern ); } // now try it $ua=getBrowser(); $yourbrowser= "Your browser: " . $ua['name'] . " " . $ua['version'] . " on " .$ua['platform'] . " reports: <br >" . $ua['userAgent']; print_r($yourbrowser); ?> up down 7 Francesco R ¶2 months ago If you ONLY need a very fast and simple function to detect the browser name (update to May 2016): <?php function get_browser_name($user_agent) { if (strpos($user_agent, 'Opera') || strpos($user_agent, 'OPR/')) return 'Opera'; elseif (strpos($user_agent, 'Edge')) return 'Edge'; elseif (strpos($user_agent, 'Chrome')) return 'Chrome'; elseif (strpos($user_agent, 'Safari')) return 'Safari'; elseif (strpos($user_agent, 'Firefox')) return 'Firefox'; elseif (strpos($user_agent, 'MSIE') || strpos($user_agent, 'Trident/7')) return 'Internet Explorer'; return 'Other'; } // Usage: echo get_browser_name($_SERVER['HTTP_USER_AGENT']); ?> Определив HTTP_USER_AGENT, остальное уже дело техники, как говорится. saskozp 1 Link to post Share on other sites
VIP buktor 243 Posted July 22, 2016 VIP Report Share Posted July 22, 2016 ага, только заголовки легко сменить, так что, если кому надо зайдет с любого бразуера) Ну да. На порносайты(я к примеру) только программисты и хакеры заходят))) Иного варианта железно определить тип браузера - нет, по крайней мере я не знаю такого варианта( Использовать функцию get_browser, которая по умолчанию не входит в дистрибутив php По умолчанию входит, просто он не включен. Не хватает файлика browscap.ini, если хостер позволяет создавать локальные php-конфиги и он не ограничил нужный параметр для работы этой функции, то можно настроить это дело. А "ini" файл можно взять из одноименного сайта browscap.org(не сочтите за рекламу( ) campusboy 1 Link to post Share on other sites
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now