반응형
웹사이트에 접속한 사용자의 정보를 읽어오는 부분을 기록합니다
아래와 같이 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에 저장할 수 있습니다
반응형
'PHP∵SCRIPT' 카테고리의 다른 글
PHP 에러 메시지 레벨 조정하기 (0) | 2023.10.24 |
---|---|
유투브 주소에서 동영상 아이디만 뽑아오기 (0) | 2023.10.24 |
jquery 오른쪽 클릭 금지 (복사 금지) / 오디오 태그 다운로드 막기 (0) | 2023.10.15 |
PHP 로 웹페이지 긁어오기 모든 방법 총정리! (0) | 2023.10.04 |
[jQuery] Ajax, load, get 를 통해 URL 파일 존재 여부 확인 (0) | 2023.10.02 |
HTML DOM Events | oncontextmenu 이벤트 (0) | 2023.09.25 |
PHP 파일 업로드와 다운로드 만들기 (0) | 2023.09.24 |
PHP에서 대소문자 처리와 관련된 몇 가지 유용한 함수 (0) | 2023.09.23 |
댓글