설문조사 아이디 체크하여 중복투표 원천봉쇄!! > 그누4 팁자료실

그누4 팁자료실

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

설문조사 아이디 체크하여 중복투표 원천봉쇄!! 정보

설문조사 아이디 체크하여 중복투표 원천봉쇄!!

본문

질문과 검색, 검색과 질문을 연이어 고민을 첨가한 결과....

드뎌;;; 설문조사를 아이디로 체크하여 중복투표를 원천봉쇄하는 소스를 구현했습니다...ㅜㅜ

소스를 공개하기 전, 도움주신, 혜심님, torry님, innox님, 까만도둑님 께 감사드립니다.
모두 직·간접적으로 도움을 주셨습니다.

조잡하기 그지없지만, 이 소스로 저처럼 PHP와 친하지 않으신 분들의 고민을 하나라도 덜기를 바랍니다.. ^^


// G4/bbs/poll_update.php 파일 전체 소스입니다. 긁어서 붙여넣으세요
단, 이 소스는 아이피 체크는 하지 않습니다. 어차피 아이디로 체크하면 한 개의 아이디로는
단 한 번만 투표참여가 가능하니깐요...
새로 생성된 테이블에는 투표한 사람의 아이디와 그 사람이 투표한 항목이 무엇인지가 기록됩니다.
물론, 아이피는 검색을 하지 않을 뿐, 기록은 됩니다.


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

$po = sql_fetch(" select po_id, po_subject, po_point, po_ips from $g4[poll_table] where po_id = '$_POST[po_id]' ");
if (!$po[po_id])
    alert_close("po_id 값이 제대로 넘어오지 않았습니다.");

if ($member[mb_level] < $po[po_level])
    alert_close("권한 $po[po_level] 이상 회원만 투표에 참여하실 수 있습니다.");

$poll_check = "g4_poll_check";

// 투표여부 테이블 생성
 $sql_1 = " CREATE TABLE `$poll_check` (
 `vo_id` INT(11) NOT NULL ,
 `mb_id` VARCHAR( 20 ) NOT NULL ,
 `po_value` VARCHAR( 20 ) NOT NULL ,
 PRIMARY KEY ( `vo_id`, `mb_id` ) ) ";
 @mysql_query($sql_1);

$poll_check = "g4_poll_check";

// 이미 투표한 것인지 확인하기?
 $sql_2 = " select count(*) as cnt from $poll_check
          where vo_id = '$po_id'
          and mb_id = '$member[mb_id]' ";
 $row = sql_fetch($sql_2);

if (!$row[cnt]) {    // 투표 안했으면  투표하고 // 포인트도 주기

//아이피 기록에 관한 변수정의 및 아이피 정보 기록
        $po_ips = $po[po_ips] . $_SERVER[REMOTE_ADDR] . "\n";
        sql_query(" update $g4[poll_table] set po_cnt{$gb_poll} = po_cnt{$gb_poll} + 1, po_ips = '$po_ips' where po_id = '$po_id' ");

  // 회원이라면 포인트 부여
        if ($member[mb_id])
            insert_point($member[mb_id], $po[po_point], $po[po_id] . ". " . cut_str($po[po_subject],20) . " 투표 참여 ");

// 투표했으면 기록하기

  $sql_3 = " insert $poll_check
              set vo_id = '$po_id',
              mb_id = '$member[mb_id]',
  po_value = '$gb_poll' ";
              sql_query($sql_3);
}

else alert_close("이미 투표하셨습니다.");

goto_url("./poll_result.php?po_id=$po_id");
?>
추천
0
  • 복사

댓글 12개

당장 꼭 필요한 기능입니다.
네트워크 내의 IP를 체크하니 투표를 하질 못했습니다...
ID 체크로 중복방지 기능 ~~~해결 했습니다
개미님의 수고로 문제를 해결해 정말 감사 드림니다.
으 좋은데요 너무
근데 한가지 문제는

지난 투표를 하지 않은 사람이 지난 투표의 결과를 확인하지 못한다는 점이있습니다.

즉...지난.설문결과를 보려면 투표하지 않은분은 못본다는데 어떻게 해야할까요?
© SIRSOFT
현재 페이지 제일 처음으로