getenv("HTTP_USER_AGENT")
$_SERVER['HTTP_USER_AGENT']
어제 안드로이와 아이폰을 구분해서 출력해줄 것이 있어서 적용하다가 궁금한 것이 생겼습니다.
두가지 차이가 어떤 것인가요? 게시판 스킨에서 사용하려니 두번째 것은 변수에 아무것도 담기지 않아서 첫번째 것으로 했습니다.
getenv("HTTP_USER_AGENT")
$_SERVER['HTTP_USER_AGENT']
어제 안드로이와 아이폰을 구분해서 출력해줄 것이 있어서 적용하다가 궁금한 것이 생겼습니다.
두가지 차이가 어떤 것인가요? 게시판 스킨에서 사용하려니 두번째 것은 변수에 아무것도 담기지 않아서 첫번째 것으로 했습니다.
댓글 14
근데 템플릿에서 직접 사용하니 안되는데 혹시 템플릿에서는 쌍따옴표로 써야 할까요???
함수 형태냐 변수 형태냐의 차이만 있을 뿐 둘다 같은 값을 출력합니다.
템플릿 파일에서 변수 형태 {$_SERVER['HTTP_USER_AGENT']}를 쓰면 내부 변수로 보고 컴파일시 $__Context->_SERVER['HTTP_USER_AGENT'] 이런 형태로 변환되어 정상적인 값이 출력되지 않습니다.
굳이 템플릿 파일에서 변수 형태를 쓸려면 <?php echo $_SERVER['HTTP_USER_AGENT'] ?> PHP 코드
형태로 쓰면 됩니다.
~
<!--@end-->
이렇게 함수 형태로 쓰거나
<?php if($_SERVER['HTTP_USER_AGENT']){ ?>
~
<?php } ?>
이렇게 PHP 코드 형태로도 쓸 수 있습니다.
정리하자면,
{$_SERVER['HTTP_USER_AGENT']} 이런 형태가 안된다는 거지, 굳이 쓸려면 <?php echo $_SERVER['HTTP_USER_AGENT'] ?> 이렇게 써야 된다는 거구요.
그 이유는 {$_SERVER['HTTP_USER_AGENT']} 이렇게 쓰면 템플릿 엔진에서 무조건 $__Context->_SERVER['HTTP_USER_AGENT']으로 자동 변환하여 안된다는 그런 얘기입니다.
결론은 템플릿 엔진의 버그로 안된다는 그런 얘기입니다.
CONORY님 말씀 듣고보니 이해가 되네요.
템플릿 문법안에 $_SERVER['HTTP_USER_AGENT']를 사용하게되면 문제가 될수 있겠네요.
간단한 예로 스킨파일 안에 아래처럼 변수를 설정했다면
<?php
$a='123';
?>
{@
$a='456';
}
둘은 서로 다른 변수 입니다. php단에서 보면 위쪽은 $a, 아래쪽은 $__Context->a입니다.