추천,비추천시 아이피 도 검사하기 > 그누4 팁자료실

그누4 팁자료실

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

추천,비추천시 아이피 도 검사하기 정보

추천,비추천시 아이피 도 검사하기

본문

추천, 비추천시 현재는 회원의 아이디로만 검사 하도록 되어 있는데
유령 또는 세컨드 아이디로 장난치는 것을 막는 방법 입니다.

쿠키로 중복체크를 할려다가 아이피 보다는 비효율적이라 포기하고
걍 아이피로 검사 하도록 하였으며 프록시 서버로 경유하는 것은 막을
방법이 없습니다.ㅠ.ㅠ 아시는분 계시면 알려 주시면 감사 하겠습니다.

참고사항: 여건상 원본을 수정 하였습니다.

적용방법

1,아래의 코드를 긁어서 bbs/good.php 로 만든후 덮어쓰기

<?
include_once("./_common.php");

// 추천 테이블에 아이피를 담을 그릇이 없으므로 생성함 - 헐랭이
if ($goodadmin =='adok') {
 if ($is_admin =='super') {
$g4memoup ="ALTER TABLE $g4[board_good_table] ADD good_ip VARCHAR(255) NOT NULL";
$resultup = @mysql_query($g4memoup) or mysql_error();
  alert_close("아이피를 저장할 필드추가를 완료하였습니다.");
 } else {
 alert_close("니 머꼬? 콱");
 }
 exit;
}

@include_once("$board_skin_path/good.head.skin.php");

echo "<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'>";

if (!$is_member)
{
    $href = "./login.php?$qstr&url=".urlencode("./board.php?bo_table=$bo_table&wr_id=$wr_id");

    echo "<script language='JavaScript'>alert('회원만 가능합니다.'); top.location.href = '$href';</script>";
    exit;
}

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

$ss_name = "ss_view_{$bo_table}_{$wr_id}";
if (!get_session($ss_name))
    alert_close("해당 게시물에서만 추천 또는 비추천 하실 수 있습니다.");

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

if ($good == "good" || $good == "nogood")
{
    if($write[mb_id] == $member[mb_id])
        alert_close("자신의 글에는 추천 또는 비추천 하실 수 없습니다.");

    if (!$board[bo_use_good] && $good == "good")
        alert_close("이 게시판은 추천 기능을 사용하지 않습니다.");

    if (!$board[bo_use_nogood] && $good == "nogood")
        alert_close("이 게시판은 비추천 기능을 사용하지 않습니다.");

//아이피로검사 추가함 - 헐랭이
    $sqlm = " select * from $g4[board_good_table]
              where bo_table = '$bo_table'
                and wr_id = '$wr_id'
                and good_ip = '$_SERVER[REMOTE_ADDR]'
                and bg_flag in ('good', 'nogood') ";
    $rowm = sql_fetch($sqlm);

    if ($rowm[good_ip])
    {
        if ($rowm[bg_flag] == "good")
            $statusm = "추천";
        else
            $statusm = "비추천";

        echo "<script language='JavaScript'>alert('이미 \'$statusm\' 하신 글 입니다.');</script>";
exit;
    }
//아이피로 검사 추가 끝

    $sql = " select bg_flag from $g4[board_good_table]
              where bo_table = '$bo_table'
                and wr_id = '$wr_id'
                and mb_id = '$member[mb_id]'
                and bg_flag in ('good', 'nogood') ";
    $row = sql_fetch($sql);

    if ($row[bg_flag])
    {
        if ($row[bg_flag] == "good")
            $status = "추천";
        else
            $status = "비추천";

        echo "<script language='JavaScript'>alert('이미 \'$status\' 하신 글 입니다.');</script>";
    }
    else
    {

        // 추천(찬성), 비추천(반대) 카운트 증가
        sql_query(" update {$g4[write_prefix]}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '$wr_id' ");

        // 내역 생성
// (아이피 저장이 추가됨 - 헐랭이)
        sql_query(" insert $g4[board_good_table] set bo_table = '$bo_table', wr_id = '$wr_id', mb_id = '$member[mb_id]', good_ip = '$_SERVER[REMOTE_ADDR]', bg_flag = '$good', bg_datetime = '$g4[time_ymdhis]' ");

        if ($good == "good")
            $status = "추천";
        else
            $status = "비추천";

        echo "<script language='JavaScript'> alert('이 글을 \'$status\' 하셨습니다.');</script>";
    }


}

@include_once("$board_skin_path/good.tail.skin.php");
?>
<script language="JavaScript"> window.close(); </script>

===============================================================

2, 관리자로 로그인후 부라우저 주소줄에 아래의 링크를 딱 한번만 실행합니다.
(추천,비추천시 아이피를 저장할 필드를 추가함)

멋진내홈피주소/그누보드/bbs/good.php?goodadmin=adok
추천
4

댓글 5개

감사합니다.^^
저도 이제 퇴물이 다되었는지 질문 게시판에서 질문의 내용을 잘못보고 이방법이 나온 겁니다.ㅎㅎ
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

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