모든 웹 언어에서 그렇듯 php 에서도 브라우저의 버젼을 확인하기 위해서는 브라우저에서 보내온 사용자 에이전트(User Agent) 문자열을 분석해서 판별하게 됩니다.
다른 언어 request 에 해당하는것이 php 에서는 대부분 $_SERVER[] 에 있습니다.
자세한것은 php 메뉴얼 http://php.net/manual/en/reserved.variables.server.php 를 참고하세요주로 많이 쓴는것만 적어보면
$_SERVER["REMOTE_ADDR"] // 사용자 IP $_SERVER["HTTP_REFERER"] // 이전 페이지 $_SERVER["HTTP_USER_AGENT"] // 브라우저 정보
그럼 본격적으로 브라우저 버전을 확인하는 소스입니다.
$userAgent = $_SERVER["HTTP_USER_AGENT"]; if ( preg_match("/MSIE*/", $userAgent) ) { // 익스플로러 if ( preg_match("/MSIE 6.0[0-9]*/", $userAgent) ) { $browser = "Explorer 6"; }elseif ( preg_match("/MSIE 7.0*/", $userAgent) ) { $browser = "Explorer 7"; }elseif ( preg_match("/MSIE 8.0*/", $userAgent) ) { $browser = "Explorer 8"; }elseif ( preg_match("/MSIE 9.0*/", $userAgent) ) { $browser = "Explorer 9"; }elseif ( preg_match("/MSIE 10.0*/", $userAgent) ) { $browser = "Explorer 10"; }else{ // 익스플로러 기타 $browser = "Explorer ETC"; } } elseif ( preg_match("/Trident*/", $userAgent && preg_match("/rv:11.0*/", $userAgent && preg_match("/Gecko*/", $userAgent) ) ) ) { $browser = "Explorer 11"; } elseif ( preg_match("/(Mozilla)*/", $userAgent) ) { // 모질라 (파이어폭스) $browser = "mozilla"; } elseif ( preg_match("/(Nav|Gold|X11|Mozilla|Nav|Netscape)*/", $userAgent) ) { // 네스케이프, 모질라(파이어폭스) $browser = "Netscape/mozilla"; } elseif ( preg_match("/Opera*/", $userAgent) ) { // 오페라 $browser = "Opera"; } else { $browser = "Other"; } echo $browser;
IE11 에서는 User Agent 에 “MSIE” 문구가 삭제 되었습니다.
이제 더이상 “MSIE” 만으로는 IE 유무를 판단할 수 없습니다.
(“MS의 Internet Explorer 11 소개 및 업그레이드” 문서에도 User Agent String 변경이 자세히 실려 있습니다)
// IE11 의 User-Agent 입니다. (Windows 10 버전이라서 Windows NT 10.0 가 들어갑니다 // "MSIE"를 대체하는 "Trident" 가 들어가 있고 버전인 "rv:11.0" 그리고 "Gecko" 가 추가 되었습니다. User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; SMTE; rv:11.0) like Gecko