묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
회원 기준으로 조회시 조회수 중복 막기
2013.02.27 02:17
IP 기준이 아니라 회원정보 기준으로 조회수를 설정해야 합니다.
쉽게 설명하면 같은 아이디라면 IP가 바뀌더라도 조회수가 안올라 가야 합니다.
찾은 방식이
modules/document/document.controller.php 에서
function updateReadedCount(&$oDocument) {
}
안에
if($member_srl) {
$args->member_srl = $member_srl;
$args->document_srl = $obj->document_srl;
$output = executeQuery('document.getDocumentReadedLogInfo', $args);
if($output->data->count) {
$_SESSION['readed_document'][$document_srl] = true;
return false;};
}
를 추가 하였습니다.
컴퓨터에 깔아둔 서버에서 테스트를 하다보니...
어떻게 확인할 방법이 없네요.
같은 아이디로 다른 IP에서 조회 체크를 해야 하는데
그게 안되다 보니 확인이 어렵네요.
이쪽으로 아시는 분이면 읽어만 보면 가능할지 파악되실거 같은데...
답변 부탁드립니다.
댓글 1
-
sejin7940
2013.02.27 07:15
-
ForHanbi
2013.03.04 14:29
진작에 채택을 해 드렸어야 했는데 몸이 불편해서 늦게야 합니다. 제가 잡은 초안자체가 엉망이라 세진님이 수정을 했지만 안되더군요 -
ForHanbi
2013.03.04 14:30
그렇지만 덕분에 코드 보는 법에 대해 눈뜨는 기회가 되었기에... 추천 드립니다.
지금 추가하신 문구는...
자기가 쓴 글을 확인할때 적용되는 문구입니다.
해당 함수에서는 $member_srl 은 글을 쓴 사람의 회원번호 라는 의미거든요.
해석하면.. 회원이 쓴 글이면. 그 글을 글쓴이가 읽은 적이 있다면, 세션에 기록해, 어느 누가 보더라도 조회수가 증가되지 않는다. 라는 뜻인데.. 아마도 의도한것과 많이 다르겠죠 ^^;;
(그리고 중간의 $obj->document_srl 값은 값이 없답니다. 해당 함수에 $obj 가 전달되고 있지 않거든요. $oDocument->document_srl 이라고 하거나 $document_srl 이라고 해야하죠. )
원하는 기능을 구현하려면..
해당 함수의 // Update read counts 위에다가
if($logged_info) {
$args_member->member_srl = $logged_info->member_srl;
$args_member->document_srl = $document_srl;
$output_member = executeQuery('document.getDocumentReadedLogInfo', $args_member);
if($output_member->data->count) {
$_SESSION['readed_document'][$document_srl] = true;
return false;};
}
라고 추가하면 될듯하네요
테스트를 해본게 아니고 눈으로 보고 머리로만 짠 소스여서.. 틀릴수도 있습니다 ^^;;;