묻고답하기
layouts에서 IE6 체크하는 것은 영영 불가능한 건가요?
2009.02.19 22:41
IE6 브라우즈 버전 체크하는 것 왜 안 되는가?
layouts.html 첫머리에 아래와 같은 php를 넣었는데 전혀 실행이 안 됩니다.
그런데 건즈님은 어떻게 실행이 될 수 있었는지 참 궁금합니다.
거즈님 뭐가 잘 못인지 좀 봐주시겠습니까?
1.
<?php
include '/home/hosting_users/realjoys/www/html/idBrowser.php';
$browser = idBrowser::detect();
echo $browser['name'];
echo $browser['version'];
if ($browser['name'] == 'msie') {
if ($browser['version'] <= '6') {
echo"<!--%import(\"css/default-ie.css\")-->";
}
else {
echo"<!--%import(\"css/default-ie.css\")-->";
}
}
else {
echo"<!--%import(\"css/default-ie.css\")-->";
}
?>
2. 아래 것은 실행이 안 됩니다. 브라우즈에 아무 것도 안 나타납니다.
error
{@include('/home/hosting_users/realjoys/www/html/idBrowser.php')}
error
{@include('/home/hosting_users/realjoys/www/html/idBrowser.php');}
error
{@include '/home/hosting_users/realjoys/www/html/idBrowser.php'}
3. 이것도 실행이 안 됩니다. browser 값도 나타나지 않습니다.
<!--#include('/home/hosting_users/realjoys/www/html/idBrowser.php')-->
{@ $browser = idBrowser::detect() }
{ $browser['name'+
'+
'] }
{ $browser['version'] }
<!--@if($browser['name'] == 'msie')-->
<!--@if($browser['version'] <= 6)-->
<!--%import("css/default-ie.css")-->
<!--@else-->
<!--%import("css/default.css")-->
<!--@end-->
<!--@else-->
<!--%import("css/default.css")-->
<!--@end-->
4. 아래 것도 마찬가지로 뭘 실행하는지 통 알 수가 없습니다.
<!--사용된 브라우저와 버전, 플랫폼 확인 -->
{@$userAgent = strtolower($_SERVER['HTTP_USER_AGENT'])}
<!--브라우저 종류 확인 -->
<!--@if(preg_match('/opera/', $userAgent))-->
{@$name = 'opera'}
<!--@elseif(preg_match('/webkit/', $userAgent))-->
{@$name = 'safari'}
<!--@elseif(preg_match('/msie/', $userAgent))-->
{@$name = 'msie'}
<!--@elseif(preg_match('/mozilla/', $userAgent) && !preg_match('/compatible/', $userAgent))-->
{@$name = 'mozilla'}
<!--@else-->
{@$name = 'unrecognized'}
<!--@end-->
<!--버전 확인 -->
<!--@if(preg_match('/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/', $userAgent, $matches))-->
{@$version = $matches[1]}
<!--@else-->
{@$version = 'unknown'}
<!--@end-->
<!--플랫폼 -->
<!--@if(preg_match('/linux/', $userAgent))-->
{@$platform = 'linux'}
<!--@elseif(preg_match('/macintosh|mac os x/', $userAgent))-->
{@$platform = 'mac'}
<!--@elseif(preg_match('/windows|win32/', $userAgent))-->
{@$platform = 'windows'}
<!--@else-->
{@$platform = 'unrecognized'}
<!--@end-->
<!--@if($name == 'msie')-->
<!--@if($version <= 6)-->
<!--%import("css/default-ie.css")-->
<!--@else-->
<!--%import("css/default.css")-->
<!--@end-->
<!--@else-->
<!--%import("css/default.css")-->
<!--@end-->
빨간색 임포트를 실행하는 것을 보면
위 if 문 조건 전체를 인식하지 못하는 것 같습니다.
이거 가지고 어제 오늘 씨름을 합니다.
어떤 분은 layouts.html 에서 php도 실행 된다고 하는데
way 나는 안 되는가???
누가 좀 도와 주세요.
댓글 3
-
ㅁㅁ
2009.02.20 00:44
조금만 더 신경쓰면 하나의 CSS파일에서 해결될꺼같은데요.. -
닝기리쓰레빠
2009.02.20 02:30
구분하려는 이유가 뭔가요?? 이유를 안다면 다른방법을 알려드릴수도 있을텐데.. js파일을 이용해서 구분한 곳은 본적이 있습니다. -
건즈
2009.02.20 02:56
알려드렸던 코드는 브라우저의 종류를 인식하는 데 있어서 잘 작동하며, msie 이외의 브라우저에 대해서는 버전도 올바르게 인식합니다.
그런데, msie의 경우에 대해서는 현재로선 버전을 제대로 인식하지 못하는군요.
어제 시험하고 결과물을 올려드릴 때에는 msie를 7.0으로 정상적으로 인식하였지만, 현재는 6.0으로 인식하고 있습니다. msie 8도 6.0으로 인식하는군요. 그 이유는 잘 모르겠습니다.
하지만 레이아웃에 넣어서 출력하는 건 지난 번 댓글에서 알려드린 대로 잘됩니다.
버전 표시만 6.0으로 잘못 출력할 뿐이구요.
브라우저 검출 결과는 사용자의 브라우저 및 컴퓨터 환경에 따라 많이 달라지는 것 같습니다.
보다 많은 변수를 고려할수록 코드도 복잡해지는 것 같습니다.
조금 전에 어느 싸이트에서 본 코드는 현재 잘 작동합니다.
파일 두개를 올려드릴텐데, 두 파일을 웹싸이트의 같은 폴더에 넣고 시험해보시기 바랍니다.
browser_detection.php는 함수를 포함하며, detect.php는 호출을 합니다.
시험하실 때에는 detect.php를 웹싸이트에서 실행하시기 바랍니다.
msie가 아닌 브라우저는 msie 아님이라고 출력하며, msie인 경우에는 버전까지 출력하도록 하였습니다. 버전 6.0, 7.0, 8.0을 잘 인식합니다.
출처는 http://techpatterns.com/downloads/php-browser-detection-basic.php 입니다.