불량 회원 신고/제재 시스템 (일명 깜빵 기능) > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

불량 회원 신고/제재 시스템 (일명 깜빵 기능) 정보

불량 회원 신고/제재 시스템 (일명 깜빵 기능)

본문

이 기능은 회원이 불량 회원을 신고했을 때 신고한 시간으로 부터 몇시간 동안 게시판을 이용하지 못하도록 하는 기능입니다.

아래 소스는 신고 횟수 x6시간 동안 불량회원 감금시키는 소스 입니다.
(신고 누적 횟수가 4번 이라면 4x6시간=24시간 동안 특정게시판을 제외한 모든 게시판 사용에 접근 할 수 없습니다..)

색칠한 부분들을 자신에 맞게 수정하시고 제가 색칠 누락한 부분이 있을지도 모르니 잘 살펴보세요

예제는 http://nhead.com 좌측의 NHEAD깜빵 이라는 것을 눌러보시면 됩니다.
질문이나 코딩 문의는 위 사이트의 비회원게시판에 하시면 되겠습니다.

mb_4 필드를 사용합니다.


1.아래 소스를 singo.php 라는 파일로 만들어 그누보드가 설치된 폴더에 넣습니다.
ex)그누보드가 gb4라는 폴더에 설치 됐다면 gb4에 넣으면 됨
////////////////////////////////////////////////////////////////////////
<style>
* { padding: 0; margin: 0; }

    body,td,input,div,form,select,textarea,pre{font-size:9pt; font-family:돋움,Tahoma; color:#000000;}
</style>
<center>
<div style="height:5px; line-height:1px; font-size:1px;"> </div>
<?
include_once("./_common.php");

$mmnick = $_POST['mmnick'];
$mpage = $_POST['mpage'];
$sau = $_POST['sau'];

if(!$mpage){
?>
신고대상 에는 닉네임을 적으면 됩니다. 정확하게 적으세요. 3천 포인트 이상 부터 신고를 할 수 있습니다.<br>
구속 시간은 징계횟수 x 6시간 입니다. 신고를 3번 당하면 18시간 동안 감금 됩니다.<br>
구속 시간 동안은 "건의 / 신고란" 을 제외한 나머지 게시판에 접속을 할 수 없습니다.<br>
허위 신고를 하였을 시 589578563시간 동안 감금 됩니다. ;;;<br>
<form method=post action=singo.php>
신고대상 : <input type="text" size="20" name=mmnick >
<input type=hidden name=mpage value="p1">
/ 사유 :
<SELECT NAME="sau">
    <OPTION VALUE="" SELECTED>선택하세요</OPTION>
    <OPTION VALUE="성의 없는 글">성의 없는 글</OPTION>
    <OPTION VALUE="욕설/인심공격">욕설/인심공격</OPTION>
    <OPTION VALUE="무성의 도배">무성의 도배</OPTION>
    <OPTION VALUE="공지 위반">공지 위반</OPTION>
</SELECT>
<!-- 위 신고사유는 자신에 맞게 맘대로 추가-->
<input type=submit value="확 인">
</form>

<?
}
else if($mpage == "p1") {

    if(!$sau )
        echo "<script>alert('사유를 입력하지 않았습니다.');location.href ='singo.php';</script>";

    $sql = " select mb_nick,mb_level from g4_member where mb_nick = '$mmnick'  ";
    $row = sql_fetch($sql);
    $snick = $row['mb_nick'];

    if( $row['mb_level'] > 4  ){ // 5레벨 이상은 신고 당하지 않게 한다
        echo "<script>alert('운영진은 신고 할 수 없습니다.');location.href ='singo.php';</script>";
    }

    if( $member['mb_point'] < 3000  ){ // 3천포인트 이상 보유해야 신고를 할 수 있다
        echo "<script>alert('3천포인트 이상 부터 신고를 할 수 있습니다.');location.href ='singo.php';</script>";
    }
   
    if(!$snick){
        echo "<script>alert('신고한 닉네임이 존재하지 않습니다.');location.href ='singo.php';</script>";
    }
    else{
?>
        <b><?=$snick?></b>님을 <b><?=$sau?></b> 로 신고 하겠습니까?<br />
        <form method=post action=singo.php>
        <input type=hidden name=mmnick value="<?=$mmnick?>">
        <input type=hidden name=sau value="<?=$sau?>">
        <input type=hidden name=mpage value="p2">
        <input type=submit value="확 인"> <input type=button value="아니오" onclick="history.back();">
        </form>
<?
    }
}
else if($mpage == "p2"){

    $sql = " select mb_nick,mb_4 from g4_member where mb_nick = '$mmnick'  ";
    $row = sql_fetch($sql);
    $snick = $row['mb_nick'];
    $smb_4 = $row['mb_4'];

    if( $member['mb_point'] >= 3000 && $snick){ //신고자가 3천포이트 이상 보유하고 신고자 닉네임이 있다면 신고완료
       
        if($smb_4){
            $Amb_4 = explode("|",$smb_4);
            $shit = $Amb_4[2];
        }else{
            $shit = 0;
            $Amb_4[0] =$g4['time_ymdhis'] ;
        }
        $stime = date("Y-m-d H:i:s", strtotime($Amb_4[0]) + (int)(60*60*$shit*6)); //여기 숫자 6을 자신에 맞게 변경

        if($stime > $g4['time_ymdhis']){
            echo "<script>alert('아직 징계가 풀리지 않았습니다.');location.href ='singo.php';</script>";
        }
        else{
            $shit++;
            $sss = $g4['time_ymdhis']."|".$member['mb_nick']."|".$shit."|".$sau;

            $sql = " update g4_member SET mb_4 = '$sss' where mb_nick = '$snick' ";
            sql_query($sql);

            echo "<meta http-equiv=\"refresh\" content=\"3; URL=singo.php\">";
            echo $snick."님을 신고 완료 하였습니다.{$stime}<br />";
        }
    }
}
?>
<div style="height:5px; line-height:1px; font-size:1px;"> </div>
<TABLE width="650">
<TR align="center" height="25">
    <TD width="100">피 고 인</TD>
    <TD width="50">징계횟수</TD>
    <TD width="150">구 속 일</TD>
    <TD width="150">출 소 일</TD>
    <TD width="">죄 목</TD>
    <TD width="100">신고자</TD>
</TR>
<tr height=2 bgcolor='#999999'><td colspan=6> </td></tr>
<?
$sql2 = 'SELECT mb_nick,mb_4 FROM g4_member WHERE mb_4 <> \'\' ORDER BY `mb_4` DESC ';
$result2 = sql_query($sql2);
$ii=1;
while($row2 = sql_fetch_array($result2)){
    $snick2[$ii] = $row2['mb_nick'];
    $Amb_4[$ii] = explode("|",$row2['mb_4']);

    $stime2 = date("Y-m-d H:i:s", strtotime($Amb_4[$ii][0]) + (int)(60*60*$Amb_4[$ii][2]*6));//여기 숫자 6을 자신에 맞게 변경

    echo "<tr align=\"center\" height=\"25\"><td>".$snick2[$ii]."</td><td>".$Amb_4[$ii][2]."</td><td>".$Amb_4[$ii][0]."</td><td>".$stime2."</td><td>".$Amb_4[$ii][3]."</td>";
    if($member['mb_level']>4) echo "<td>".$Amb_4[$ii][1]."</td>";//레벨5이상만 신고자의 이름이 보입니다.
    else echo"<td>비 공 개</td>";
    echo "</tr><tr height=2 bgcolor='#dddddd'><td colspan=6> </td></tr>";

    $ii++;
}
?>
</TABLE>
</center>
////////////////////////////////////////////////////////////////////////


2. 그누보드 head.php 파일 상단에 아래 내용을 추가합니다.
////////////////////////////////////////////////////////////////////////
if($member['mb_4']){

    if($bo_table && $bo_table != "게시판ID"){ // 불량회원이 이 게시판만 접속 가능하게 합니다.다른 게시판 접속 불가능
        $Amb_4 = explode("|",$member['mb_4']);
        $stime = date("Y-m-d H:i:s", strtotime($Amb_4[0]) + (int)(60*60*$Amb_4[2]*6)); //여기 6은 singo.php의 *6의 숫자와 같게 만들어야 함

        if($stime > $g4['time_ymdhis']){
            echo "<script>alert('회원님은 현재 구속 중 입니다.');top.location.href=\"http://자신의 사이트주소.com 혹은 이동될 페이지\";</script>";
        }
    }
}
////////////////////////////////////////////////////////////////////////
추천
5

댓글 4개

전체 3,309 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT