Copy
// 이미 등록된 내역이라면 건너뜀
if ($rel_table || $rel_id || $rel_action)
{
$sql = " select count(*) as cnt from {$g5['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;
}
lib/common.lib.php
위 파일의 insert_point 함수 중에서 $rel_table 또는 $rel_id 또는 $rel_action
변수가 중복되는 것이 1개라도 있으면 포인트를 지급하지 않고 return -1 합니다
sql 서치 구문을 활용하기 위해
insert_point($member['mb_id'], $win, "승리", "@good", $member['mb_id'], G5_TIME_YMD);
위 처럼 모든 테이블을 다 활용하는데 포인트 획득을 반복적으로 해야해서
위 return -1을 막아야합니다.
10번 째 라인
if ($row['cnt'] && $rel_id != @good)
처럼 위와 같이 바꾸면 정상적으로 되긴 한데, common.lib.php (코어) 파일을 수정하기는 싫네요 ㅜㅜ
다른 방법 없을 지 알려주시면 감사하겠습니다.
|
답변 1개 / 댓글 5개
채택된 답변
+20 포인트
$rel_action 값을 계속 변경해서 넘기면 됩니다.
예) $rel_action = date('Y-m-d H:i:s');
답변에 대한 댓글 5개
추가로
[code]
$time = G5_TIME_YMD;
$sql = " select count(*) as cnt from {$g5['point_table']}
where po_rel_table = '@good'
and po_rel_action = '$time'
and mb_id = '$member[mb_id]' ";
$row = sql_fetch($sql);
[/code]
위 코드 처럼 g5_point의 모든 테이블을 사용하고 있어
랜덤 토큰도 활용하기 힘든 것 같습니다.
다른 방법이 있을까요?
[code]
$time = G5_TIME_YMD;
$sql = " select count(*) as cnt from {$g5['point_table']}
where po_rel_table = '@good'
and po_rel_action = '$time'
and mb_id = '$member[mb_id]' ";
$row = sql_fetch($sql);
[/code]
위 코드 처럼 g5_point의 모든 테이블을 사용하고 있어
랜덤 토큰도 활용하기 힘든 것 같습니다.
다른 방법이 있을까요?
답변을 작성하려면 로그인이 필요합니다.
하지만 이 또한 중복될 가능성은 있습니다. rel_action의 db 필드 구조를 보면 varchar(255)이기때문에 꼭 Date형식만 입력될 필요는 없으므로 G5_TIME_YMDHIS와 랜덤 토큰을 함께 사용하시면 중복될 확률은 더 낮아집니다.