사용자가 게시글을 봤고 다시 접속했을 때 방문했다는 것을 감지할 수 있는 방법이 어떤것이 있나요?

사용자가 게시글을 봤고 다시 접속했을 때 방문했다는 것을 감지할 수 있는 방법이 어떤것이 있나요?

QA

사용자가 게시글을 봤고 다시 접속했을 때 방문했다는 것을 감지할 수 있는 방법이 어떤것이 있나요?

답변 1

본문

안녕하세요.

 

제목이 길어져서 다시 설명하자면 , 이용자 a가 b게시판에 있는 1번째 글을 방문하고, 내일 다시 b게시판에

 

있는 1번째 글을 방문했을 때 , 글 아래에 이용자 a만 볼수 있는 "어제 방문하였습니다"같은 멘트를 넣고 싶

 

습니다.

 

제가 생각했었던 방법은 $member['mb_1']에 " ['게시글 고유코드':'방문완료'] , " 형태로 저장하고 concat으로 누적시키고, 쿼리문에 like으로 가져와서 비교하여, 매칭이 되면 위의 문자를 출력할려고

 

하는데 계속 실패하여, 조언을 구하고자 합니다..

이 질문에 댓글 쓰기 :

답변 1

저라면 멤버테이블이 아니라 게시판 글 안에 데이터를 저장할 것 같습니다.

 

view.skin.php에서

 

<?php

    // wr_1에 '아이디|방문시간,아이디|방문시간,아이디|방문시간' 의 형태로 데이터를 담습니다.
    $check_view = explode(',', $view['wr_1']);    //여분필드(글을 읽은 아이디 목록을 가져옴) 
    $is_visited = false;    //방문했는지 확인하는 용도의 변수
    
    for($i = 0; $i<sizeof($check_view); $i++){    //여분필드를 쉼표(,)로 나누고 그 크기만큼 반복문 실행 
        $check_id = explode('|', $check_view[$i]);    // 그 안에서 (|)으로 한번 더 나눕니다.
        //print_r2($check_id);                         //주석 해제해서 데이터 확인해보세요.
        for($x =0; $x<sizeof($check_id); $x++){        //그걸 반복문 실행
            if($check_id[0] == $member['mb_id']){    // 배열안에 로그인한 맴버의 아이디가 있다면 true처리
                $is_visited = true;
                $visited_time = $check_id[1];    //방문한 시간
            }
        }
    }
    
    
    if($is_visited == false){    //방문기록이 없으면 업데이트 시켜줍니다.
        $view_member = $view['wr_1'].','.$member['mb_id'].'|'.G5_TIME_YMDHIS;
        $sql = "update g5_write_{$bo_table} set wr_1 = '$view_member' where wr_id = $wr_id and wr_is_comment = 0 ";
        sql_query($sql);
    }else{    //방문기록이 없으면 현재시간과 visited_time의 차이를 구해서 XX일전 방문했습니다 형태로 남기세요
        if($visited_time){
            echo $visited_time.'에 방문했습니다.';
        }
    }
    
}

?>

 

우선 제 사이트에서 돌려봤는데 정상적으로 돌아가는데..

아마 그대로 복붙하시면 안되실 수도 있어요

 

주석 다 달아드렸으니 보시면 질문자님께서 이해하실 수준이실거라 생각합니다.
    

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 56
© SIRSOFT
현재 페이지 제일 처음으로