사용자가 게시글을 봤고 다시 접속했을 때 방문했다는 것을 감지할 수 있는 방법이 어떤것이 있나요?
본문
안녕하세요.
제목이 길어져서 다시 설명하자면 , 이용자 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.'에 방문했습니다.';
}
}
}
?>
우선 제 사이트에서 돌려봤는데 정상적으로 돌아가는데..
아마 그대로 복붙하시면 안되실 수도 있어요
주석 다 달아드렸으니 보시면 질문자님께서 이해하실 수준이실거라 생각합니다.