$_SERVER['HTTP_USER_AGENT']
의 이해
$_SERVER['HTTP_USER_AGENT']
는
HTTP 요청을 보낸 클라이언트의 브라우저를 식별하는 데 사용되는 요청 헤더 변수입니다.
클라이언트(방문자)의 브라우저의 이름, 버전, 운영 체제, 기기, 크롤링 bot, 플러그인 등의 정보가 문자열로 담겨 있습니다.
- 클라이언트(방문자)가 어떤 종류의 브라우저를 사용하고 있는지 체크하는데 유용합니다.
- PHP의 슈퍼글로벌 변수 중 하나로 전역 범위(전역 스코프, Global Scope)에서 사용할 수 있습니다.
주의하세요!
$_SERVER['HTTP_USER_AGENT']
와 같은 클라이언트 측 정보는 보안 관련 목적으로 활용할 경우에 추가적인 적절한 조치가 필요합니다.
주의하세요!
캐싱 설정에 따라 $_SERVER['HTTP_USER_AGENT']
의 값이 캐시될 수 있습니다. 캐시된 값은 실제 클라이언트의 정보와 다를 수 있기 때문에, $_SERVER['HTTP_USER_AGENT']
를 사용하여 클라이언트의 특성을 파악하거나, 사용자 맞춤 콘텐츠를 제공하는 경우 문제가 발생할 수 있습니다.
$_SERVER['HTTP_USER_AGENT']
변수 값
$_SERVER['HTTP_USER_AGENT']
변수를 확인하려면 다음과 같이 할 수 있습니다.
이 스크립트의 샘플 출력은 다음과 같다고 가정하겠습니다.
$_SERVER['HTTP_USER_AGENT']
값이 위 샘플 출력으로 주어진 경우 해당 값에서 얻을 수 있는 정보는 다음과 같습니다.
- 운영 체제: Windows NT 10.0
- 플랫폼: Win64 (64비트 Windows)
- 렌더링 엔진: WebKit(Apple이 개발한 WebKit 렌더링 엔진이며, WebKit의 버전이 537.36이라는 의미임)
- 브라우저의 이름: Chrome
- 브라우저의 버전: 119.0.0.0
이처럼 $_SERVER['HTTP_USER_AGENT']
는 클라이언트(방문자)의 브라우저의 이름, 버전, 운영 체제, 기기, 플러그인 등의 정보가 문자열로 담겨 있습니다.
$_SERVER['HTTP_USER_AGENT']
변수 값의 활용
$_SERVER['HTTP_USER_AGENT']
변수 값은 다음과 같은 상황에 활용하면 매우 유용합니다.
클라이언트(방문자)의 브라우저 체크
$_SERVER['HTTP_USER_AGENT']
는 클라이언트(방문자)가 어떤 종류의 브라우저를 사용하고 있는지 체크(식별)하는데 유용합니다. 여기에서는 주요한 브라우저 몇 가지를 체크하는 방법에 대해 소개하겠습니다.
일러두기!
소개하는 예제 코드들은 클라이언트(방문자)의 브라우저를 User Agent 문자열을 기반으로 감지하는 간단한 방법을 제공합니다. User Agent를 기반으로 한 브라우저 감지는 완벽하지 않으며 특히 보안 관련 목적으로 활용할 경우에 추가적인 적절한 조치가 필요합니다.
크롬(Chrome) 브라우저 체크하기
코드를 간단히 해석해보겠습니다.
$_SERVER['HTTP_USER_AGENT']
- 이는 현재 HTTP 요청을 보낸 클라이언트의 사용자 에이전트 문자열을 나타냅니다.stripos($_SERVER['HTTP_USER_AGENT'], 'chrome')
-stripos()
함수를 사용하여 사용자 에이전트 문자열에서 'chrome'이라는 문자열이 있는지 확인합니다.stripos()
함수는 대소문자를 구분하지 않고 문자열을 찾는 함수이며, 찾은 경우 해당 위치를 반환합니다.!== false
-stripos()
함수의 반환값이false
가 아니라면 (즉, 'chrome'을 찾은 경우), 조건이 참이 됩니다.echo '방문자가 크롬 브라우저를 사용하고 있습니다.';
- 조건이 참이면, 즉 사용자가 Chrome 브라우저를 사용하고 있다면 이 메시지가 출력됩니다.
따라서, 이 코드는 사용자의 브라우저가 Chrome인 경우에 해당 메시지를 출력하는 역할을 합니다.
사파리(Safari) 브라우저 체크하기
$_SERVER['HTTP_USER_AGENT']
로 확인해 보면, 사파리(Safari) 브라우저에는 'Safari'
라는 문자열이 있습니다.
주의할 점은크롬(Chrome) 브라우저를 $_SERVER['HTTP_USER_AGENT']
로 확인해 보면, 'Safari'
라는 문자열도 포함될 수 있다는 것입니다. (여기에서는 자세한 내용을 언급하지 않습니다.) 따라서 위 코드 예제에서는 'Safari'
라는 문자열이 있지만, 크롬(Chrome) 브라우저가 아닌 조건문을 만들어 사파리(Safari) 브라우저를 사용한 방문자를 체크하는 예제 코드입니다.