테스트 사이트 - 개발 중인 베타 버전입니다

insert_point 함수 중 채택완료

</p>

<p>    // 이미 등록된 내역이라면 건너뜀

    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;

    }</p>

<p>

 

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개

채택된 답변
+20 포인트

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

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

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

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

[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의 모든 테이블을 사용하고 있어
랜덤 토큰도 활용하기 힘든 것 같습니다.

다른 방법이 있을까요?
일일 제한 횟수를 두기를 원한다고 하시면서..
반복해서 포인트를 지급해야한다.
2가지가 모순된거 아닌가요??
제가 잘 이해를 못하는 건가??
제가 개발하려고자 하는 건 게임 플러그인 입니다.

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

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인

전체 질문 목록