말탄개미

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

· 2005-06-29 (수) 13:11:50 · 6290 · 12
질문과 검색, 검색과 질문을 연이어 고민을 첨가한 결과....

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

소스를 공개하기 전, 도움주신, 혜심님, 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");
?>
|

댓글 12개

와아~
2005-06-30 (목) 18:49:41
기립박수 짝짝짝
2005-06-30 (목) 02:29:24
감사합니다. 중복금지
수고하셨어요..저도 필요했거든요 ^^
2005-06-29 (수) 13:22:01
꼭 필요한 기능이었습니다.
감사합니다.
덕분에 소스 공개할 수 있었습니다.^^
2005-11-08 (화) 20:22:05
당장 꼭 필요한 기능입니다.
네트워크 내의 IP를 체크하니 투표를 하질 못했습니다...
ID 체크로 중복방지 기능 ~~~해결 했습니다
개미님의 수고로 문제를 해결해 정말 감사 드림니다.
2006-07-10 (월) 18:44:10
중복 투표 한방에 해결 하는군요 ㅎㅎ
감사합니다.
으 좋은데요 너무
근데 한가지 문제는

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

즉...지난.설문결과를 보려면 투표하지 않은분은 못본다는데 어떻게 해야할까요?
2009-03-17 (화) 08:38:07
중복 투표 기능 제거
2012-01-01 (일) 07:15:58
아이디 기록
댓글을 작성하시려면 로그인이 필요합니다.

그누4 팁자료실

3,309건

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

+
제목 글쓴이 날짜 조회
05-06-30 조회 8,828
05-06-30 조회 6,465
05-06-30 조회 5,749
mmando
05-06-30 조회 4,332
05-06-18 조회 5,245
05-06-29 조회 2.2만
05-06-29 조회 4,442
05-06-29 조회 6,291
mmando
05-06-29 조회 6,343
05-06-29 조회 5,741
05-06-28 조회 4,317
mmando
05-06-28 조회 4,426
05-08-04 조회 3,529
mmando
05-06-28 조회 3,925
05-06-24 조회 6,018
05-06-21 조회 5,556
05-06-21 조회 4,416
05-06-19 조회 6,758
05-06-19 조회 7,329
05-06-19 조회 5,798