질문 & 답변 게시판
아래는 제로보드 설문조사 소스인데 어느부분을 어떻게 수정해야 중복투표를 막을수 있을까요? 고수님들의 의견 부탁드립니다.
<?
$host_name = "localhost"; // 호스트 네임
$user_name = "dbid"; // db 아이디
$db_name = "dbname"; // db 네임
$db_password = "pass"; // db 비밀번호
$zero_path = "zboard"; // 제로보드의 위치, 절대경로를 적어 주세요 (예: http://www.charmstock.com/zboard)
$vt_width = "180"; // 설문창의 크기
// 라이브러리 함수 파일 인크루드
require "/web/home/joonshin79/html/bbs/lib.php"; // 상대경로를 적어 주시기 바랍니다 (예: /local/user/zboard/lib.php)
// DB 연결
if(!$connect) $connect=dbConn();
$member=member_info();
// 현재글의 Vote수 올림;;
if(!eregi($setup[no]."_".$no, $HTTP_SESSION_VARS[zb_vote])) {
mysql_query("update $t_board"."_$id set vote=vote+1 where no='$sub_no'");
mysql_query("update $t_board"."_$id set vote=vote+1 where no='$no'");
// 4.0x 용 세션 처리
$zb_vote = $HTTP_SESSION_VARS[zb_vote] . "," . $setup[no]."_".$no;
session_register("zb_vote");
// 기존 세션 처리 (4.0x용 세션 처리로 인하여 주석 처리)
//$HTTP_SESSION_VARS[zb_vote] = $HTTP_SESSION_VARS[zb_vote] . "," . $setup[no]."_".$no;
}
@mysql_close($connect);
?>
<style type="text/css">
BODY,TD,input,DIV,form,TEXTAREA,center,option,pre,blockquote {font-size:9pt;color:000000;font-family:굴림;}
.write {border-style:none; background-color:#FFFFFF;}
body {background-color:transparent}
</style>
<body STYLE="margin:0">
<?
$filename=realpath(__FILE__);
$id = "vote"; //제로보드 설문조사 게시판명 (예: vote)
$title_leg = "100"; //설문조사 제목 최대길이
$connect = mysql_connect($host_name,$user_name,$db_password);
mysql_select_db($db_name);
echo"
<script>
function check_survey()
{
var check=0;
for(i=0;i<main_survey.sub_no.length;i++)
{
if(main_survey.sub_no[i].checked) {check=1;}
}
if(check<1) {alert('항목을 선택해주세요.'); return false;}
return true;
}
</script>";
$result=mysql_query("select * from zetyx_board_$id where prev_no=0 order by arrangenum asc") or die(mysql_error());
for($i=0; $i < $data=mysql_fetch_array($result); $i++)
{
$title_cut="$data[subject]";
$title_leg2=strlen($title_cut);
for($k=0; $k<$title_leg-1; $k++)
{
if(ord(substr($title_cut, $k, 1))>127) $k++;
}
if ($title_leg2 > $title_leg)
{
$title_cutt=substr($title_cut, 0, $k)."...";
}
else {
$title_cutt=$title_cut;
}
if($i==0)
{
$no=$data[no];
$total_vote=$data[vote];
echo "<table width='180' border='0' cellspacing='0' cellpadding='0'>";
echo "<tr>";
echo "<td align='center' valign='middle'><table border='0' align='center' cellpadding='0' cellspacing='0'>
<tr>
<td>☞ $title_cutt</td>
</tr>
</table></td>";
echo "</tr>";
echo "<tr>";
echo "<td align='left' valign='middle'><form method=post action=/제로보드폴더/latest_skin/shiniya_vote/vote.php name=main_survey onsubmit='return check_survey()'>
<input type=hidden name=id value=$id>
<input type=hidden name=no value=$no>";
}else{
$sub_no=$data[no];
$bar_size=(int)(($data[vote]/$total_vote)*100);
$blank_size=(int)(100-($data[vote]/$total_vote)*100);
echo "<input type=radio name=sub_no value=$sub_no onfocus=this.blur()>$title_cutt<br></td>";
echo "<table width='180' border='0' cellspacing='0' cellpadding='0'>
<tr>
<td width='160' align='center'>
<table align='center' width=120 border=0 height=10 cellspacing=0 cellpadding=0><tr>
<td width=$bar_size% background='/제로보드폴더/latest_skin/shiniya_vote/images/bar.gif'>
</td><td width=$blank_size% bgcolor=EEEEEE>
</td></tr></table></td>
<td width='40'><span style='font-size:8pt;'> $bar_size%</span></td>
</tr>
</table>
</td>";
echo "</tr>";
}
}
echo "<tr>";
echo "<td align='center' valign='middle'><table border='0' align='center' cellpadding='0' cellspacing='0'>
<tr>
<td><BR><input type='submit' name='Submit' value='투표하기' onfocus=this.blur()></td>
</tr>
</table></td>";
echo "</tr>";
echo "</form></table>";
?>



http://www.zeroboard.com/?mid=zb4_tip&search_target=title&search_keyword=%EC%B6%94%EC%B2%9C&document_srl=855492
위에 주소를 잘 읽어 보세요.
설명이나 소스를 보면 중복 추천자를 막는 것이 간단치 않습니다.