p

게시물 클릭할때 포인트 추가 또는 감소할경우 ID단위말고 쿠키로 중복막는 방법있나요?

· 2007-04-13 (금) 10:45:25 · 1790 · 14
또 질문 올립니다..ㅠㅠ
 
게시물클릭할때 포인트 추가로 해놧더니 아이디여러개 만들어서 포인트 불리는 유저가...ㅠㅠ
 
물론 다 막는건 불가능하겠지만요..
 
그래서 같은아이디로는 이중클릭해도 물론 포인트가 가산되지 않는데요..
 
같은컴퓨터로 다른 아이디로 접속했을때도 포인트가 가산 되지않게 하는 방법 있나요?
 
그 경우 경고창 뜨게하는것도 가르쳐주시면 감사하겠습니다!!!
 
부탁합니다!!!
|

댓글 14개

어디선가 쿠키로 막는 방법이 있었는데..ㅠㅠ 부탁합니다~
쿠키로 체크하는 방법은 비추천입니다.
가장 정확한 방법은 1차로 아이디로 체크하고 2차로 아이피로 체크를 하도록하는 방법외에는
없을듯 보입니다만 이것도 프록시 서버로 경유할 경우 막을 방법이 없습니다.
2007-04-14 (토) 10:16:09
포인트 인서트 부분의 액션에 아이피값을 넣으세요.

lib/common.lib.php 파일에 중복 값이면 패스하므로...
2007-04-14 (토) 10:16:29
쿠키를 사용하지 않아도... -_-ㅋ
으악! 이런 실수를.ㅠㅠ
제가 질문의 내용을 잘못 봤네요. 추천 하기로 봤다는..흙
두부다 고맙습니다...그런데요..포인트 인서트부분의 액션에 아이피값을 넣으라는데...ㅠㅠ
도데체 어떤 소스를 어떻게 넣어야하는지 도무지 무르겟습니다..
제가 무식한지라 가르침 부탁합니다!
그누 기본 포인트 인서트 함수로 는 문제점이 있군요.
그누보드에서 사용중인 전체포인트 인서트문마다 아이피값을 넣어줘야 하는 문제가 있네요.
(이경우 관리자 모드에서 포인트 인서트시 문제가 있습니다.)

아래처럼 별도로 함수를 하나더 만들어서 적용해야 할듯 합니다.


// 포인트 부여
//아이피를 체크하기 위해서 전용 평션을 하나더 만듬
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]."");
헐랭이님 감사합니다..뭔가 보일려고 하네요.그러면 전용평션을 /lib/common.lib.php에다가 넣어주면 되는건가요? 아니면 스킨파일에 직접 넣어줘야할까요..참고로 포인트 인서트 소스는

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]."");
common.lib.php 에 저 평션을 추가해 준후 인서트문은 아래처럼 해야겠죠. insert_pointms() 를 적용


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]."");
http://www.sir.co.kr/bbs/tb.php/g4_qa/41517

헐랭이님 제가 지금 사용하고 있는팁입니다..예전에 헐랭이님께서 가르쳐주셨던 인서트 사용하고 있어요;

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]}");
헐랭이님 감사합니다..어떻게 된듯싶네요;;ㅠㅠ
댓글을 작성하시려면 로그인이 필요합니다.

그누4 질문답변

66,531건

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기 기존 게시물은 열람만 가능합니다.

+
제목 글쓴이 날짜 조회
07-04-13 조회 1,829
07-04-13 조회 1,285
07-04-13 조회 2,568
07-04-13 조회 1,602
07-04-13 조회 1,657
07-04-13 조회 1,791
07-04-13 조회 1,680
07-04-13 조회 1,659
07-04-13 조회 1,609
07-04-13 조회 2,053
07-04-13 조회 1,762
07-04-13 조회 1,683
07-04-13 조회 1,644
07-04-12 조회 1,987
07-04-12 조회 1,605
07-04-12 조회 1,533
07-04-12 조회 1,616
07-04-12 조회 1,607
07-04-12 조회 1,605
07-04-12 조회 2,588