2시간마다 링크 클릭시 포인트 주는 방법이 없을까요?ㅠㅠ > 그누4 질문답변

그누4 질문답변

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

2시간마다 링크 클릭시 포인트 주는 방법이 없을까요?ㅠㅠ 정보

2시간마다 링크 클릭시 포인트 주는 방법이 없을까요?ㅠㅠ

본문

게시판에서 2시간마다 링크 클릭시 포인트 주는 방법이 없을까요?ㅠㅠ

이리 찾고 저리찾다가 결국에는 링크클릭시 포인트 올릴수 있는지 묻고 있네요...흐미 아무리 찾아도 되는 자료가 없으니...ㅠㅠ

제발 알고 계시다면 ...이 사람을 위해 알려주지 않겠습니까...이거가지고 지금 몇일째 ...찾고 다니는지 ...ㅜㅜ

그누보드에서 그런 게시물이 있다면 링크좀 부탁드리겠습니다...ㅠㅠ

다른님들 배너연동스킨 다해봤는데...확실하게 되는게 없네요 ...아 왜이러지 정말...;;

그냥 링크클릭시 2시간마다 포인트 올릴수 있는 방법좀 가르쳐 주세요 ㅠㅠ
  • 복사

댓글 전체

우선 링크를 이용하실경우 2시간마다 클릭을 허용하실경우

기존 link.php 파일은 세션을 이용하여 링크를 증가 하게 되어잇습니다.
무슨뜻이면 웹브라우저가 닫혔다 새로 열지 않는 이상 한번 열어논 상태서는
링크를 클릭해도 히트수가 증가가 되지 않는다는 말입니다.

그러니 2시간마다 링크 히트수를 증가 하는 방법을 사용하실려면
별도의 DB테이블을 만들어서
링크 클릭시 클릭한 회원정보와 시간 그리고 링크내용을 저장하여
그내용과 비교하여 2시간이 지났는지 확인한후
조건이 맞을수
링크 히트수가 올라가는 방식을 써야합니다.
만약에 세션을 삭제한후 클릭하여 링크수 증가가 된다면은

http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=5073

이용하여

세션을 2시간마다 삭제하여 새로운 세션을 만들어주게끔 하면 될지도 모르겠네요
그리고 제가 올리신 스킨을 사용하실경우

포인트 지급 같은경우에는 세션과 관계가 없으니
시간함수를 이용하여 포인트 테이블에서 마지막 링크 클릭으로 받은 포인트 점수의
시간을 비교하여 재 포인트 발급하시는 방법을 사용하시면 되겠구요
다소 코드가 필요 합니다.

처음 클릭했을때, 시간을 db에 기록할 필드를 하나 만들고요. 다음에 클릭 시. 기록을 가져와 시간이 2시간 이 지나면 포인트 상승 하고 현재시간을 업데이트, 아직 안지났으면, 그냥 그대로. 이런 식으로 짜야 할 것 같네요.
bbs/link.php 소수 일부입니다.

$ss_name = "ss_link_{$bo_table}_{$wr_id}_{$no}";
if (empty($_SESSION[$ss_name]))
{
    $sql = " update {$g4[write_prefix]}{$bo_table} set wr_link{$no}_hit = wr_link{$no}_hit + 1 where wr_id = '$wr_id' ";
    sql_query($sql);

    set_session($ss_name, true);
}


여기스 $ss_name에 true 값 대신 update한 시각을 저장하고

if (empty($_SESSION[$ss_name]))

대신에

시간 차이를 계산해서 처리하면 될 거 같습니다.
<?
include_once("./_common.php");

$html_title = "$group[gr_subject] > $board[bo_subject] > " . conv_subject($write[wr_subject], 255) . " > 링크";

if (!($bo_table && $wr_id && $no))
    alert_close("값이 제대로 넘어오지 않았습니다.");

// SQL Injection 예방
$row = sql_fetch(" select count(*) as cnt from {$g4[write_prefix]}{$bo_table} ", FALSE);
if (!$row[cnt])
    alert_close("존재하는 게시판이 아닙니다.");

if (!$write["wr_link{$no}"])
    alert_close("링크가 없습니다.");

$ss_name = "ss_link_{$bo_table}_{$wr_id}_{$no}";
if (empty($_SESSION[$ss_name]))
{
    $sql = " update {$g4[write_prefix]}{$bo_table} set wr_link{$no}_hit = wr_link{$no}_hit + 1 where wr_id = '$wr_id' ";
    sql_query($sql);

    insert_point($member[mb_id], $board[bo_write_point], "$board[bo_subject] $wr_id 링크 $no", $bo_table, $wr_id, '링크'.$no);

    set_session($ss_name, time());
} else if( time()-$_SESSION[$ss_name] > 60*60*2) {

    insert_point($member[mb_id], $board[bo_write_point], "$board[bo_subject] $wr_id 링크 $no", $bo_table, $wr_id, '링크'.$no);
    set_session($ss_name, time());
}

goto_url(set_http($write["wr_link{$no}"]));
?>
엑스엘엠님이 써주신 방법은 좋은 방법입니다~

그런데 정작 중요한것은 위에 세션을 이용하면 웹닫앗다 다시열면 초기화 되기때문에
2시간 기준이 없으므로
링크라이즈 같이 정확한 적립을 요구하려면
별도의 DB테이블을 만들어서 링크 클릭시 그 정보를 저장한후
비교하여 2시간이 지났는지 체크한후 포인트를 줘야 할거 같습니다.
© SIRSOFT
현재 페이지 제일 처음으로