BOARD

팁·활용

그누보드에서 방문자 유입 경로(HTTPREFERER) 확인 및 활용 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 17회 작성일 26-10-02 15:00

본문

그누보드에서 방문자 유입 경로(HTTP_REFERER) 확인 및 활용 방법

방문자가 어떤 검색 엔진이나 사이트를 통해 내 사이트에 접속했는지 확인하고, 이를 게시판 글쓰기 등 필요한 곳에 활용하는 방법을 안내합니다.

방문자 유입 경로(HTTP_REFERER) 확인 방법

방문자가 어떤 경로를 통해 사이트에 접속했는지 확인하려면 PHP의 $_SERVER['HTTP_REFERER'] 변수를 사용합니다. 이 변수는 방문자가 이전에 머물렀던 페이지의 주소를 담고 있습니다.

유입 경로 확인 코드 예시

preg_match 함수를 사용하여 리퍼러(Referer) 주소에 특정 검색 엔진 도메인이 포함되어 있는지 정규식으로 판별할 수 있습니다.

<?php
if (isset($_SERVER['HTTP_REFERER'])) {
 $referer = $_SERVER['HTTP_REFERER'];

 if (preg_match("/naver\.com/i", $referer)) {
 echo "네이버";
 } else if (preg_match("/daum\.net/i", $referer)) {
 echo "다음";
 } else if (preg_match("/(google\.co\.kr|google\.com)/i", $referer)) {
 echo "구글";
 } else {
 echo "기타 유입";
 }
} else {
 echo "리퍼러 정보 없음";
}
?>

유입 경로 유지 및 활용

페이지 이동 후에도 유입 경로를 추적해야 한다면, 접속 초기 단계(예: /head.php 상단)에서 해당 값을 $_SESSION에 저장하여 활용해야 합니다.

// /head.php 상단에 추가 예시
if (!isset($_SESSION['ad']) && isset($_SERVER['HTTP_REFERER'])) {
 $_SESSION['ad'] = $_SERVER['HTTP_REFERER'];
}

주의사항 및 한계

  • 정보 부재: 방문자가 주소를 직접 입력하거나, 즐겨찾기를 통해 접속하거나, 브라우저 보안 정책으로 인해 리퍼러 정보를 차단한 경우 $_SERVER['HTTP_REFERER'] 값은 비어있게 됩니다.
  • 로봇 접속: 검색 엔진 로봇 등이 사이트를 방문할 때도 리퍼러 정보가 수집될 수 있으므로, 통계 목적으로 활용할 경우 로봇 접속을 제외하는 로직이 필요할 수 있습니다.
  • 정규식 활용: preg_match 사용 시 /i 플래그를 추가하면 대소문자를 구분하지 않고 검색할 수 있어 유입 경로 판별에 유용합니다.

리퍼러(Referer) 정보가 수집되지 않는 경우

$_SERVER['HTTP_REFERER']는 웹 브라우저가 이전 페이지에서 현재 페이지로 이동할 때 전달하는 정보입니다. 따라서 다음과 같은 상황에서는 리퍼러 정보가 수집되지 않거나 비어있을 수 있습니다.

  • 직접 접속: 브라우저 주소창에 URL을 직접 입력하여 접속하거나, 즐겨찾기(북마크)를 통해 접속하는 경우 이전 페이지가 없으므로 리퍼러 정보가 남지 않습니다.
  • 보안 정책 및 차단: 브라우저의 보안 정책이나 개인 정보 보호 설정, 또는 사용자가 리퍼러 전송을 차단한 경우 정보가 전달되지 않습니다.
  • 스크립트 이동: onclick 이벤트 등을 통해 자바스크립트로 페이지를 이동시키는 경우, 브라우저 환경에 따라 리퍼러 정보가 제대로 전달되지 않을 수 있습니다.
  • 검색 엔진의 정책: 구글이나 페이스북 등 일부 사이트는 개인 정보 보호를 위해 상세 경로를 삭제하고 도메인 정보만 전달하거나, 아예 리퍼러 정보를 제한적으로 제공하기도 합니다.

운영 시 주의사항

리퍼러 정보는 항상 존재하지 않을 수 있으므로, 코드를 작성할 때는 반드시 값이 존재하는지 먼저 확인하는 로직이 필요합니다.

if (!empty($_SERVER['HTTP_REFERER'])) {
 $referer = $_SERVER['HTTP_REFERER'];
 // 이후 정규식 검사 등 로직 수행
} else {
 // 리퍼러가 없을 경우에 대한 처리 (예: '직접 접속'으로 간주)
}

페이지 이동 후에도 유입 경로를 유지하고 싶다면, 첫 접속 시점에 $_SERVER['HTTP_REFERER'] 값을 세션($_SESSION)에 저장하여 활용하는 방식을 권장합니다.

페이지 이동 후 유입 경로 유지 방법

방문자가 사이트에 처음 접속했을 때의 유입 경로(HTTP_REFERER)는 페이지를 이동하면 사라질 수 있습니다. 이를 유지하려면 PHP 세션(Session)을 사용하여 서버에 경로 정보를 저장해야 합니다.

1. 유입 경로 세션 저장 절차

사이트의 공통 파일(예: head.php 또는 common.php) 상단에 아래와 같은 로직을 추가하여, 세션에 값이 없을 때만 유입 경로를 저장하도록 설정합니다.

<?php
// 세션이 시작되지 않았다면 시작
if (session_status() == PHP_SESSION_NONE) {
 session_start();
}

// 세션에 유입 경로가 저장되어 있지 않고, 리퍼러 정보가 존재할 경우 저장
if (!isset($_SESSION['ss_referer']) && isset($_SERVER['HTTP_REFERER'])) {
 $_SESSION['ss_referer'] = $_SERVER['HTTP_REFERER'];
}
?>

2. 저장된 경로 활용

글쓰기 페이지나 다른 페이지에서 유입 경로가 필요할 때, 저장해둔 세션 값을 호출하여 사용합니다.

<?php
$referer = isset($_SESSION['ss_referer'])? $_SESSION['ss_referer']: '직접 접속';
echo "유입 경로: ". $referer;
?>

3. 세션 유효시간 및 관리

세션은 서버의 설정에 따라 일정 시간 후 자동으로 삭제됩니다. 세션 수명을 조정하려면 php.ini 파일에서 session.gc_maxlifetime 값을 수정해야 합니다.

  • 설정 예시: session.gc_maxlifetime = 3600 (1시간으로 설정)
  • 주의: 값을 변경한 후에는 웹 서버(Apache 또는 Nginx)를 재시작해야 설정이 적용됩니다.

4. 주의사항 및 한계

  • 리퍼러 수집 제한: 브라우저 보안 정책, 즐겨찾기 접속, 직접 주소 입력, 또는 onclick 이벤트 등을 통한 접속 시에는 $_SERVER['HTTP_REFERER'] 값이 비어있을 수 있습니다.
  • 데이터 유지 범위: 세션은 브라우저를 종료하거나 세션 만료 시간이 지나면 초기화됩니다.
  • 로봇 접속: 검색 엔진 봇(Bot)의 접속은 일반 사용자와 구분하여 처리해야 정확한 통계 집계가 가능합니다.

방문자 유입 경로 확인 및 적용 가이드

방문자가 어떤 검색 엔진을 통해 유입되었는지 확인하려면 PHP의 $_SERVER['HTTP_REFERER'] 변수를 사용합니다. 아래는 상황별 판단 기준과 행동 지침입니다.

내 상황우선할 판단다음 행동
유입 검색 엔진 식별$_SERVER['HTTP_REFERER'] 값 존재 여부 확인preg_match로 도메인 패턴 검사
페이지 이동 후 경로 유지세션($_SESSION)에 값 저장 여부 확인head.php 상단에 세션 저장 로직 추가
리퍼러 정보가 없음직접 접속 또는 보안 정책 차단 여부 판단'직접 접속'으로 간주하여 예외 처리

적용 절차

  1. 값 확인: isset($_SERVER['HTTP_REFERER'])를 통해 리퍼러 정보가 있는지 먼저 확인합니다.
  2. 패턴 매칭: preg_match("/naver\.com/i", $referer)와 같이 정규식을 사용하여 검색 엔진 도메인을 식별합니다.
  3. 세션 저장: 페이지 이동 후에도 경로를 추적하려면 접속 초기 단계에서 $_SESSION['ss_referer'] = $_SERVER['HTTP_REFERER'];를 실행합니다.

실전 FAQ

Q: 리퍼러(Referer)가 수집되지 않는 경우는 언제인가요? A: 사용자가 주소창에 직접 URL을 입력하거나 즐겨찾기로 접속할 때, 또는 브라우저의 보안 정책(Referrer-Policy)이나 확장 프로그램에 의해 리퍼러 전송이 차단된 경우 값이 비어있게 됩니다.

Q: 검색 엔진 외에 다른 사이트 유입도 확인 가능한가요? A: 가능합니다. preg_match의 정규식 패턴에 확인하고자 하는 사이트의 도메인(예: facebook.com, twitter.com)을 추가하여 동일한 방식으로 판별할 수 있습니다.

Q: 세션에 저장된 유입 경로가 사라지는 시점은 언제인가요? A: 세션은 브라우저를 종료하거나 php.ini에 설정된 session.gc_maxlifetime 시간이 지나면 자동으로 만료됩니다. 더 긴 유지가 필요하다면 해당 설정값을 조정해야 합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.