본문 바로가기
IT실습공부/개인프로젝트

개인 사이트의 방문자 정보를 기록하고, 위치정보를 표기해보자

by 육지상어 2020. 12. 12.
728x90
반응형

서버의 부담을 최소화 + DB가 현재 없는 상태이기에 이 방법을 사용했다.
$ip = $SERVER["REMOTE_ADDR"];
$days = date("Y-n-j_h:i:s");
";
$dummy_str = $ip."|".$days;
$dummy_str = explode("
",$dummy_str)[0];

//exec($str,$ip_list,$dummy_e);

$str = "tac /home/connect_list.txt";
exec($str,$ip_list,$dummy_e);
if (!in_array($dummy_str,$ip_list))
{
$str = "echo '$dummy_str' >> /home/connect_list.txt";
system($str);

}

위와 같이 프론트 php 단에서 방문자의 ip와 날짜를 기입한다. db대신 리눅스 서버 내부에 txt파일로 저장한다.

만약 동일 정보가 존재하지 않는다면 기록하지 않는다.

이제 위치 정보를 따와야하는데, 누구가 접근 가능한 api에다 접속자 ip를 받아 주소를 적으면 해당 정보다 json으로 리턴된다. 위치 정보를 text로 저장해야하는데, 서버 내부에 json 파일을 만들어 백엔드 단에서 저장해주는 펑션을 만들어준다. js는 사용자 단에서 사용되므로, 서버 단에서 동작하는 펑션을 돌리기 위한 조치이다.

let before_url =document.referrer;
let ip = "";

    let days = now_time();
    let str = "http://ip-api.com/json/"+ip;
    //let  str = upbit + "?market=KRW-BTC&count=1";
    $.ajax({
            url : str,
            //dataType : "json",
    //      async : false

    }).done( function(res){ 
            //alert(JSON.stringify(res));
            let dummy_str = ip+"|"+days+"|"+res.country+"|"+res.regionName+"|"+res.city+"_"+res.isp+"_"+res.org+"_"+res.as+"|"+before_url;
            file_write(dummy_str);
    });

위와 같이 필요한 정보를 얻고 파일 작성 펑션으로 돌려준다.
파일 작성 펑션은 아래와 같다.
function file_write(str)
{
//alert(str);
let sstr = encodeURIComponent(str);
let url = "http://3.131.51.160/connect_log.php?val=log_write"; < -내가 돌리는 내부 php 파일
$.ajax({
url : url,
type : "POST",
data : {str : sstr}//,
//dataType : "json",
//async : false
}).done( function(res){
//alert(res)
});
}
내부에서 역시 text 파일 단위로 시간별로 사용자 접속 기록을 기입해준다.

이후 불러내는 함수에서 해당 파일을 백엔드단에서 읽고, js 단에서 파싱 후, table에 기입해주면 사용자 위치를 대략적으로나마 알 화면에 표기할 수 있다.

 

반응형

댓글