insert_point 함수 중

insert_point 함수 중

QA

insert_point 함수 중

답변 1

본문


    // 이미 등록된 내역이라면 건너뜀
    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, "승리", "", $member['mb_id'], G5_TIME_YMD);

위 처럼 모든 테이블을 다 활용하는데 포인트 획득을 반복적으로 해야해서

위 return -1을 막아야합니다.

 

10번 째 라인

if ($row['cnt'] && $rel_id != )

처럼 위와 같이 바꾸면 정상적으로 되긴 한데, common.lib.php (코어) 파일을 수정하기는 싫네요 ㅜㅜ

다른 방법 없을 지 알려주시면 감사하겠습니다.

이 질문에 댓글 쓰기 :

답변 1

$rel_action 값을 계속 변경해서 넘기면 됩니다.

예) $rel_action = date('Y-m-d H:i:s');

그누보드에서 정의 된 G5_TIME_YMD 상수말고 G5_TIME_YMDHIS 상수를 쓰시면 더 편리할듯합니다.
하지만 이 또한 중복될 가능성은 있습니다. rel_action의 db 필드 구조를 보면 varchar(255)이기때문에 꼭 Date형식만 입력될 필요는 없으므로 G5_TIME_YMDHIS와 랜덤 토큰을 함께 사용하시면 중복될 확률은 더 낮아집니다.

우선 답변 감사합니다.

G5_TIME_YMD 상수를 이용하는 이유는 일일 제한 횟수를 두기 위해서 입니다.
G5_TIME_YMDHIS 상수를 이용하는 경우 뒤 HIS를 제외한 YMD만 서치가 되지 않습니다ㅠ

다른 방법 조언받고 싶습니다.

추가로


$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);


위 코드 처럼 g5_point의 모든 테이블을 사용하고 있어
랜덤 토큰도 활용하기 힘든 것 같습니다.

다른 방법이 있을까요?

제가 개발하려고자 하는 건 게임 플러그인 입니다.

일일 횟수 제한에 그 제한된 횟수동안 포인트를 지급 받아야하니
2가지를 사용하는 게 맞습니다.

insert_point 함수를 이용해서 모든 g5_point 테이블을 다 사용해서
구분과 해당 날짜 서치가 필요합니다..

답변을 작성하시기 전에 로그인 해주세요.
전체 4
© SIRSOFT
현재 페이지 제일 처음으로