게시물 클릭할때 포인트 추가 또는 감소할경우 ID단위말고 쿠키로 중복막는 방법있나요?
또 질문 올립니다..ㅠㅠ
게시물클릭할때 포인트 추가로 해놧더니 아이디여러개 만들어서 포인트 불리는 유저가...ㅠㅠ
물론 다 막는건 불가능하겠지만요..
그래서 같은아이디로는 이중클릭해도 물론 포인트가 가산되지 않는데요..
같은컴퓨터로 다른 아이디로 접속했을때도 포인트가 가산 되지않게 하는 방법 있나요?
그 경우 경고창 뜨게하는것도 가르쳐주시면 감사하겠습니다!!!
부탁합니다!!!
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 14개
가장 정확한 방법은 1차로 아이디로 체크하고 2차로 아이피로 체크를 하도록하는 방법외에는
없을듯 보입니다만 이것도 프록시 서버로 경유할 경우 막을 방법이 없습니다.
lib/common.lib.php 파일에 중복 값이면 패스하므로...
제가 질문의 내용을 잘못 봤네요. 추천 하기로 봤다는..흙
도데체 어떤 소스를 어떻게 넣어야하는지 도무지 무르겟습니다..
제가 무식한지라 가르침 부탁합니다!
그누보드에서 사용중인 전체포인트 인서트문마다 아이피값을 넣어줘야 하는 문제가 있네요.
(이경우 관리자 모드에서 포인트 인서트시 문제가 있습니다.)
아래처럼 별도로 함수를 하나더 만들어서 적용해야 할듯 합니다.
// 포인트 부여
//아이피를 체크하기 위해서 전용 평션을 하나더 만듬
function insert_pointms($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='')
{
global $config;
global $g4;
global $is_admin;
// 포인트 사용을 하지 않는다면 return
if (!$config[cf_use_point]) { return 0; }
// 포인트가 없다면 업데이트 할 필요 없음
if ($point == 0) { return 0; }
// 회원아이디가 없다면 업데이트 할 필요 없음
if ($mb_id == "") { return 0; }
$mb = sql_fetch(" select mb_id from $g4[member_table] where mb_id = '$mb_id' ");
if (!$mb[mb_id]) { return 0; }
// 이미 등록된 내역이라면 건너뜀
if ($rel_table || $rel_id || $rel_action)
{
$sql = " select count(*) as cnt from $g4[point_table]
where mb_id = '$mb_id'
and po_rel_table = '$rel_table'
and po_rel_id = '$rel_id'
and po_rel_action = '$rel_action' ";
$row = sql_fetch($sql);
if ($row[cnt])
return -1;
// 중복 아이피를 걸러내기 위해서 회원 아이디는 무시하고 아이피로 한번더 검사함
$sql2 = " select count(*) as cnt from $g4[point_table]
where po_rel_table = '$rel_table'
and po_rel_id = '$rel_id'
and po_rel_action = '$rel_action' ";
$row2 = sql_fetch($sql2);
if ($row2[cnt])
return -1;
}
// 포인트 건별 생성
$sql = " insert into $g4[point_table]
set mb_id = '$mb_id',
po_datetime = '$g4[time_ymdhis]',
po_content = '".addslashes($content)."',
po_point = '$point',
po_rel_table = '$rel_table',
po_rel_id = '$rel_id',
po_rel_action = '$rel_action' ";
sql_query($sql);
// 포인트 내역의 합을 구하고
$sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$mb_id' ";
$row = sql_fetch($sql);
$sum_point = $row[sum_po_point];
// 포인트 UPDATE
$sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$mb_id' ";
sql_query($sql);
return 1;
}
위처럼 평션을 하나더 만든후
글읽기시 포인트 차감이나 더해 줄때에 아래처럼 하세요.
//포인트 인서트시 아이피를 추가함
insert_pointms($member[mb_id], $board[bo_read_point], "$board[bo_subject] $wr_id 글읽기", $bo_table, $wr_id, "읽기".$_SERVER[REMOTE_ADDR]."");
insert_point($member[mb_id], $link_point, "$board[bo_subject] $no $write[wr_subject] 클릭", $bo_table, $wr_id, "읽기_{$g4[time_ymd]}_{$no}");
이런식으로 되어있는데요.
밑에처럼 바꾸면 되겠죠?
insert_point($member[mb_id], $link_point, "$board[bo_subject] $no $write[wr_subject] 클릭", $bo_table, $wr_id, "읽기1_{$g4[time_ymd]}_{$no}", "읽기2".$_SERVER[REMOTE_ADDR]."");
insert_pointms($member[mb_id], $link_point, "$board[bo_subject] $no $write[wr_subject] 클릭", $bo_table, $wr_id, "읽기1_{$g4[time_ymd]}_{$no}", "읽기2".$_SERVER[REMOTE_ADDR]."");
인스트시 마자막 3부분이 이렇게 되어야만 게시판+글번호+아이피 로 비교 합니다.
insert_pointms($member[mb_id], $board[bo_read_point], "$board[bo_subject] $wr_id 글읽기", $bo_table, $wr_id, "읽기".$_SERVER[REMOTE_ADDR]."");
헐랭이님 제가 지금 사용하고 있는팁입니다..예전에 헐랭이님께서 가르쳐주셨던 인서트 사용하고 있어요;
pointdel.php을 수정해야하거든요
insert_pointms($member[mb_id], $link_point, "$board[bo_subject] $no $write[wr_subject] 클릭", $bo_table, $wr_id, "읽기1_{$g4[time_ymd]}_{$no}_{$_SERVER[REMOTE_ADDR]}");