테스트 사이트 - 개발 중인 베타 버전입니다

접속기록

평상심NZ 9개월 전 조회 1,372

접속자 기록을 기록을 남기기 위해서  아래 코드를 넣었습니다.

이것은 하루에 여러번 방문해도 한번만 기록에 남기려고한 것입니다.

 

</p>

<p>// 방문자 정보 가져오기

$ip_address = $_SERVER['REMOTE_ADDR'];

$user_agent = $_SERVER['HTTP_USER_AGENT'];

$visit_date = date('Y-m-d');</p>

<p>// 동일 사용자 중복 체크

$sql = "SELECT COUNT(*) AS count FROM visitor_records WHERE ip_address = '{$ip_address}' AND user_agent = '{$user_agent}' AND access_date = '{$visit_date}'";

$result = $conn->query($sql);

$row = $result->fetch_assoc();</p>

<p>if ($row['count'] == 0) {

    // 중복되지 않은 경우에만 기록

    $sql = "INSERT INTO visitor_records (ip_address, user_agent, access_time, access_date)

            VALUES ('{$ip_address}', '{$user_agent}', NOW(), '{$visit_date}')";

    if ($conn->query($sql) === TRUE) {

        // 세션에 기록 상태 저장

        $_SESSION['bookcafe'] = true;

    } else {

        error_log("Error: " . $conn->error);

    }

}</p>

<p>

 

그런데 디비의 접속 기록을 보니

http://sir.kr/data/editor/2501/3526878085_1737312443.5341.png" />

 

하난의 IP에 거의 같은 시간으로 6개가 기록되었습니다.

user_agent가 다 다른데, 이데 어덯게 된 것인지 아시는 분이 계실까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

9개월 전

기기까지 체크해서 그러신거 같네요.

아이피는 같지만 기기는 다르게 체크되니 아이피 별로 하실려면 

$sql = "SELECT COUNT(*) AS count FROM visitor_records WHERE ip_address = '{$ip_address}' AND user_agent = '{$user_agent}' AND access_date = '{$visit_date}'";
에서
user_angent 빼시고 시간도 동일 시간이 아닌 날짜로 비교하게 쿼리문을 변경하셔야 할 거 같습니다.
로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

웅푸
9개월 전
$sql = "SELECT COUNT(*) AS count FROM visitor_records WHERE ip_address = '{$ip_address}' AND access_date = '{$visit_date}'";
평상심NZ
9개월 전
@블랙캣77님 감사합니다.
@웅푸님 자상하시네요. 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

플라이
9개월 전

기기별로 접속을 다르게 해서 내부 아이피로 사용하는 PC로 적용된거라 해당 아이피의 다른 OS 환경으로 접속되는걸로 확인되는게 아닌가 싶긴 한데 해당 아이피의 접속의 주기가 같은 시간대인데 얼마나 많이 요청이 있는지를 보고 판단해서 트래픽 발생유무를 확인해 보셔서 대응하시면 되실듯 합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

평상심NZ
9개월 전
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

기록만 봐서는 봇인거 같고, 다양한 리눅스 매킨토시 윈도우인거 보니 기기별 접속 테스트? 뭐 이런 봇일 가능성이 잇습니ㅏ.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

평상심NZ
9개월 전
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인