하루에 한번 링크 클릭시 포인트 주기 소스 좀 가르쳐 주세요!! > 그누4 질문답변

그누4 질문답변

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

하루에 한번 링크 클릭시 포인트 주기 소스 좀 가르쳐 주세요!! 정보

하루에 한번 링크 클릭시 포인트 주기 소스 좀 가르쳐 주세요!!

본문

하루에 한번 링크 클릭시 포인트 주기 가능한가요?
게시물을 클릭해서 들어가는게 아니라 배너 게시판 처럼 리스트에서 바로 클릭해서 하루에한번 링크 클릭시 포인트 주고 싶은데..
 
고수님들 부탁합니다!!
  • 복사

댓글 전체

제가 예전에 했던 질문에 "천상재회"님께서 g3->g4버젼으로 지니아빠님의 팁을 변조해 팁으로
남겨주셨네요!!

1. view.skin.php 상단에 넣습니다.

$point = $board[bo_8]; //게시판 여분필드 8을 사용하였습니다.필요시 수정하세요.

2. view.skin.php 의 링크 관련 부분입니다.

// 링크

$cnt = 0;

for ($i=1; $i<=$g4[link_count]; $i++)

{

    if ($view[link][$i])

    {

        $cnt++;

        $link = cut_str($view[link][$i], 70);

        echo "<tr><td height=22>&nbsp;&nbsp;<img src='{$board_btn_path}/img/icon_link.gif' align=absmiddle>
<a href='{$view[link_href][$i]}' onclick='javascript:pointdel($i);'  target=_blank><strong>{$link}</strong> ({$view[link_hit][$i]})</a></td></tr>";

    }

}

3 view.skin.php의 하단 스크립트 부분에 넣으세요..

<script type='text/javascript'>
    function pointdel(no){
        window.open("<?=$board_skin_path?>/pointdel.php?bo_table=<?=$bo_table?>&wr_id=<?=$view[wr_id]?>&link_point=<?=$point?>&no=" +no, 'PointDelWin', 'left=10000,top=10000,width=100,height=100');
    }
</script>

4. 아래 내용을 해당 스킨에 pointdel.php로 저장합니다.

<?
$g4_path = "../../..";
include_once("$g4_path/common.php");

// 이미 읽은 링크를 클릭하였는지를 검사한 후 게시물당 한번만 포인트를 차감하도록 수정
$ss_name = "ss_link{$no}_{$bo_table}_{$wr_id}";

if (!get_session($ss_name))
{
    // 자신의 글이라면 통과
    // 관리자인 경우 통과
    if (($write[mb_id] && $write[mb_id] == $member[mb_id]) || $is_admin)
;
    else if ($board[bo_link_level] > 1) // 회원이상 링크가 가능하다면
    {
        //  포인트가 음수이고 회원의 포인트가 0 이거나 작다면
        if ($member[mb_point] + $link_point < 0)
            alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 링크(".number_format($link_point).")가 불가합니다.\\n\\n포인트를 적립하신 후 다시 링크 해 주십시오.");

        // 게시물 작성자에게 포인트 지급
//insert_point($write[mb_id], $link_point, "$board[bo_subject] $write[wr_subject] 방문", $bo_table, $wr_id, "방문");
// 게시물 링크 클릭자에게서 포인트 감소
        insert_point($member[mb_id], (-1) * $link_point, "$board[bo_subject] $write[wr_subject] 자료다운 $no", $bo_table, $wr_id, "자료 다운로드_{$no}");
    }
   
    set_session($ss_name, TRUE);
}

?>
<script>
window.close();
</script>
아참~~ 이것은 view에서 하는거죠~~
view.skin.php 이곳의 링크설정되 있는 부분을 list.skin.php 제목링크 설정 부분으로 교체 해주시면 됩니다!!

<a href='{$view[link_href][$i]}' onclick='javascript:pointdel($i);'  target=_blank><strong>{$link}</strong> ({$view[link_hit][$i]})</a></td></tr>";

이쪽 부분을 list.skin.php의 제목 링크 부분과 적절하게 교합하시면 되거든요!!

그리고 위의 팁들을 list.skin.php로 이동하시면 됩니다!!
답변감사합니다. 그런데,,하루에 한번 포인트 주기가 아니라 이미 한번 클릭하면 포인트 반영되지 않는 소스 인거 같은데...

하루지나면 포인트 반영되게 하고 싶거든요.가능할까요?
아래처럼 날자를 넣어 주세요.

// 게시물 링크 클릭자에게서 포인트
        insert_point($member[mb_id], $link_point, "$board[bo_subject] $write[wr_subject] 방문", $bo_table, $wr_id, "링크_{$g4[time_ymd]}");
헐랭이님 감사합니다.

제가 설명이 부족했나봅니다..

하루지나면 반영한다는말은 클릭하고 하루지나고 반영이 아니라,
링크클릭은 한번클릭에 끝나는것이 아니라 24시간 이내에 몇번 클릭해도 포인트는 한번으로 계산하는것이거든요..

그러니까 24시간 지난후 또 클릭하면 포인트가 부여되게끔 하는것이지요.

예를 들어 오늘 A라는 링크를 한번 클릭하면 클릭한 순간 포인트 부여되고 그 링크 클릭한 사람이 24간 지난후 다시 클릭하면 포인트가 부여되도록 하는거거든요..

가능할까요?
링크 클릭시 포인트는 천상재회님의 팁을 참고 하시고
http://sir.co.kr/bbs/tb.php/g4_tiptech/8261

링크를 클릭시 포인트주기는 링크_{$g4[time_ymd]} 식으로 날자를 넣어 주면
하루에 한번 포인트를 주게 됩니다.


// 게시물 링크 클릭자에게서 포인트를 하루 1번만 업데이트
        insert_point($member[mb_id], $link_point, "$board[bo_subject] $write[wr_subject] 방문", $bo_table, $wr_id, "링크_{$g4[time_ymd]}");
땡~~~! 틀렸습니다.....^^

세션도 정리가 필요합니다...^^

// 이미 읽은 링크를 클릭하였는지를 검사한 후 게시물당 한번만 포인트를 차감하도록 수정
$ss_name = "ss_link{$no}_{$bo_table}_{$wr_id}";

==>>

// 이미 읽은 링크를 클릭하였는지를 검사한 후 게시물당 한번만 포인트를 차감하도록 수정
$ss_name = "ss_link{$no}_{$bo_table}_{$wr_id}_{$g4[time_ymd]}";
제생각에는 insert_point() 함수에서
$bo_table, $wr_id, "링크_{$g4[time_ymd]}"); 요거 3개를 대조하여
중복 체크를 하므로 세션체크는 별로 중요한 부분이 아니라고 생각이 됩니다만....
아니라면 낭패인디....ㅠㅠ
감사합니다!  그렇다면 한번 클릭한것은 24시간이내에 보이지 않게끔도 가능할까요?
그렇다면 회원들이 무슨 링크를 봤는지 알텐데..자꾸 물어봐서 죄송합니다~
링크가 출력되는 부분을 천상재회님의 조언대로 아래와 같이 감싸주면 가능할듯 합니다.

<?
$ss_name = "ss_link{$no}_{$bo_table}_{$wr_id}_{$g4[time_ymd]}";
if (!get_session($ss_name))
{
?>

링크 표시용 코드삽입

<?
  set_session($ss_name, TRUE);
}
?>

테스트를 해보질 못하여 정확한지는 모르지만 이렇게 하면
하루에 한번만 링크가 보이게 될듯 합니다.
© SIRSOFT
현재 페이지 제일 처음으로