상세 컨텐츠

본문 제목

php 사용자 접속IP, 브라우저정보, os정보, http, https 접속프로토콜 알아오기

카테고리 없음

by 동해둘리 2019. 4. 12. 10:16

본문

반응형

웹사이트에 접속한 사용자의 정보를 읽어오는 부분을 기록합니다

 

아래와 같이 HTTP_USER_AGENT 를 읽어오면 

 

$userAgent = $_SERVER["HTTP_USER_AGENT"]; 

 

다음과 같은 문자열이 반환됩니다

 

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

 

위 정보를 Parsing 해서 브라우저 정보와 OS 정보만 따로 뽑아내려면 다음과 같은 함수를 사용하시면 됩니다

 

function getBrowserInfo() 
{
  $userAgent = $_SERVER["HTTP_USER_AGENT"]; 
  if(preg_match('/MSIE/i',$userAgent) && !preg_match('/Opera/i',$u_agent)){
    $browser = 'Internet Explorer';
  }
  else if(preg_match('/Firefox/i',$userAgent)){
    $browser = 'Mozilla Firefox';
  }
  else if (preg_match('/Chrome/i',$userAgent)){
    $browser = 'Google Chrome';
  }
  else if(preg_match('/Safari/i',$userAgent)){
    $browser = 'Apple Safari';
  }
  elseif(preg_match('/Opera/i',$userAgent)){
    $browser = 'Opera';
  }
  elseif(preg_match('/Netscape/i',$userAgent)){
    $browser = 'Netscape';
  }
  else{
    $browser = "Other";
  }

  return $browser;
}

 

echo getBrowserInfo();

 

 

OS정보를 읽어오려면 다음과 같이 하시면 됩니다

 

function getOsInfo()
{
  $userAgent = $_SERVER["HTTP_USER_AGENT"]; 

  if (preg_match('/linux/i', $userAgent)){ 
    $os = 'linux';}
  elseif(preg_match('/macintosh|mac os x/i', $userAgent)){
    $os = 'mac';}
  elseif (preg_match('/windows|win32/i', $userAgent)){
    $os = 'windows';}
  else {
    $os = 'Other';

  }

  return $os;
}

 

echo getOsInfo();

 

 

아울러, 사용자가 http 로 접속했는지 아니면 https 프로토콜로 접속했는지 알아내려면

다음과 같은 방법이 있습니다

 

function IsHttps() {
  return (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443;
}

 

echo IsHttps();

 

https 로 접속했을 경우 1 이 반환됩니다 

 

 

저는 특정페이지의 접속기록을 확인하고 싶을 경우에, 다음과 같이 만들어놓고, 필요한 페이지에 include 하여 사용하고 있습니다.

 

 


//############################################################
//# START : 접속기록을 남긴다
//############################################################

function getBrowserInfo() 
{
$userAgent = $_SERVER["HTTP_USER_AGENT"]; 
if(preg_match('/MSIE/i',$userAgent) && !preg_match('/Opera/i',$u_agent)){
$browser = 'Internet Explorer';
}
else if(preg_match('/Firefox/i',$userAgent)){
$browser = 'Mozilla Firefox';
}
else if (preg_match('/Chrome/i',$userAgent)){
$browser = 'Google Chrome';
}
else if(preg_match('/Safari/i',$userAgent)){
$browser = 'Apple Safari';
}
elseif(preg_match('/Opera/i',$userAgent)){
$browser = 'Opera';
}
elseif(preg_match('/Netscape/i',$userAgent)){
$browser = 'Netscape';
}
else{
$browser = "Other";
}

return $browser;
}

function getOsInfo()
{
$userAgent = $_SERVER["HTTP_USER_AGENT"]; 

if (preg_match('/linux/i', $userAgent)){ 
$os = 'linux';}
elseif(preg_match('/macintosh|mac os x/i', $userAgent)){
$os = 'mac';}
elseif (preg_match('/windows|win32/i', $userAgent)){
$os = 'windows';}
else {
$os = 'Other';}

return $os;
}

// https 접속일 경우 1을 반환한다 
function isSecure() {
return
(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
|| $_SERVER['SERVER_PORT'] == 443;
}


$user_agent   = $_SERVER["HTTP_USER_AGENT"];
$browser = getBrowserInfo();
$os      = getOsInfo();

$arrDay= array('일요일','월요일','화요일','수요일','목요일','금요일','토요일');
$date = date('w'); //0 ~ 6 숫자 반환

$static_page_url    = $_SERVER["PHP_SELF"];
$static_dayofweek   = $arrDay[$date];
$static_access_time = date("H");
$static_user_ip     = getenv('REMOTE_ADDR');
$static_enroll_date = date("Y") . date("m") . date("d");
$static_signdate    = time();
$static_year        = date("Y");
$static_month       = date("m");
$static_day         = date("d");

// https 접속일 경우만 기록한다. http 접속은 webalizer 에 기록된다 
if (isSecure())
{
$STATISTICS_QUERY = "INSERT INTO statistics ( user_agent, browser, os, year, month, day, page_url, dayofweek, access_time, user_ip, enroll_date, signdate ) VALUES ( '$user_agent', '$browser', '$os', '$static_year', '$static_month', '$static_day', '$static_page_url', '$static_dayofweek', '$static_access_time', '$static_user_ip', '$static_enroll_date', '$static_signdate' ) ";

$result = mysqli_query($dbconn,$STATISTICS_QUERY);
}
//############################################################
//# END : 접속기록을 남긴다
//############################################################

 

 

위와 같이 하면, 사용자의 IP, 브라우저, os, 접속일자, 페이지URL, 요일, 시간 등의 정보를 DB에 저장할 수 있습니다

 

 

위의 정보를 이용하여 통계그래프를 표시하여 확인하고 있습니다

 

 

 

참고로 저 동해둘리가 직접 운영하는 '성공하는 중이다'  카페를 소개드립니다. 

각자의 분야에서 성공을 향해 가는 과정에서 힘이되는 이야기, 힘이되는 사진, 성공스토리, 실패스토리 등을 나누고자 합니다. 많은 참여 부탁드려요

 

https://cafe.naver.com/ingsuccess

 

성공하는 중이다 : 네이버 카페

성공을 위해 실패를 두려워하지 않는 분들의 이야기를 나누고 싶습니다. 우리는 성공하는 중이니까요!

cafe.naver.com

 

 

반응형

댓글 영역