libvote.php
来自「linux/unix环境下的建站系统」· PHP 代码 · 共 809 行 · 第 1/2 页
PHP
809 行
<?php/*** @id:windinsn dec 21, 2003** System Vote*/////////////////////////////////////////////// System Vote Configure Startif(function_exists("bbs_sysconf_str")){$sysVoteConfig["DBHOST"]=bbs_sysconf_str("MYSQLHOST");$sysVoteConfig["DBUSER"]=bbs_sysconf_str("MYSQLUSER");$sysVoteConfig["DBPASS"]=bbs_sysconf_str("MYSQLPASSWORD");$sysVoteConfig["DBNAME"]=bbs_sysconf_str("MYSQLSMSDATABASE");$sysVoteConfig["BOARD"]="SYSOP";$sysVoteConfig["PAGESIZE"]=20;// System Vote Configure End///////////////////////////////////////////$sysVoteConfig["BRDARR"] = array();$sysVoteConfig["BRDNUM"] = bbs_getboard($sysVoteConfig["BOARD"], $sysVoteConfig["BRDARR"]);}function sysvote_db_connect(){ GLOBAL $sysVoteConfig; @$link = mysql_connect($sysVoteConfig["DBHOST"],$sysVoteConfig["DBUSER"],$sysVoteConfig["DBPASS"]) or die("无法连接到服务器!"); @mysql_select_db($sysVoteConfig["DBNAME"],$link); return $link;}function sysvote_db_close($link){ @mysql_close($link);}function sysvote_is_admin($currentuser){ global $sysVoteConfig; if(bbs_is_bm($sysVoteConfig["BRDNUM"], $currentuser["index"])) return TRUE; else return FALSE;}function html_format($str,$wrap=FALSE,$stripSlashes=TRUE){ if($stripSlashes) $str = stripslashes($str); $str = str_replace(" "," ",htmlspecialchars($str)); if($wrap) $str = nl2br($str); return $str;}function time_format($t){ $t= $t[0].$t[1].$t[2].$t[3]."-".$t[4].$t[5]."-".$t[6].$t[7]." ".$t[8].$t[9].":".$t[10].$t[11].":".$t[12].$t[13]; return $t;}function svGetManagers($managers){ if($managers=="") return NULL; $manager = explode(" ",$managers); $manArr = array(); $manStr = ""; $manHtmlStr = ""; for($i = 0 ;$i < count($manager);$i++) { $manager[$i] = trim(ltrim($manager[$i])); if(!$manager[$i]) continue; $manStr[] = $manager[$i]; if($manStr!="") $manStr .= "|".$manager[$i]; else $manStr = $manager[$i]; $manHtmlStr .= "<a href=\"/bbsqry.php?userid=".htmlspecialchars($manager[$i])."\">".htmlspecialchars($manager[$i])."</a>"; } return array("MANARR" => $manArr , "MANSTR" => $manStr , "HTMLSTR" => $manHtmlStr);}function svGetProbEtems($etems,$proType){ if($proType!=4) { $etem = explode("|",$etems); $etemArr = array(); for($i = 0 ;$i < count($etem) ; $i ++) { $etem[$i] = ltrim(trim($etem[$i])); if($etem[$i]=="") continue; $etemArr[] = $etem[$i]; } } else $etemArr[0] = trim(ltrim($etems)); return $etemArr;} function svPostAnnouce($board,$svInfor){ $brdArr=array(); $boardID= bbs_getboard($board,$brdArr); if( $boardID == 0) die("指定的版面不存在!"); $title = "[通知] 举办系统投票:".$svInfor[subject]; $content = "【此篇文章是由自动发信系统所张贴】\n\n". "⊙ 投票开启于:".date("D M d H:i:s Y")." 类别:系统投票\n". "⊙ 主题:".$svInfor[subject]."\n". "⊙ 投票说明:\n\n".$svInfor[desc]; $ret = bbs_postarticle($board, $title, $content, 0 , 0 , 0, 0 ); return $ret;} class sysVoteAdmin{ var $user ; function svDelVote($link,$svid) { $svid = (int)($svid); $query = "DELETE FROM sysvote_users WHERE svid = '".$svid."';"; mysql_query($query,$link); $query = "DELETE FROM sysvote_votes WHERE svid = '".$svid."';"; mysql_query($query,$link); } function svEndVote($link,$svid,$annType,$annBoard) { global $currentuser,$sysVoteConfig; $this->user = $currentuser; $vote = sysvote_load_vote_infor($link,$svid); //初始化各个变量 $ann = "⊙ 投票开启于:".$vote[created]." 类别:系统投票\n". "⊙ 主题:".$vote[ori][subject]."\n". "⊙ 投票说明:\n\n".$vote[ori][description]."\n\n\n". $voteres = array(); for($i=0 ; $i< count($vote[probs]) ;$i++) { $etemNum[$i] = count($vote[probs][$i][etems]); for($j = 0 ; $j < $etemNum[$i] ;$j++) $voteres[$i][$j+1]=0; if($vote[probs][$i][type]==4) $voteres[$i][0]="本题通过投票征集的意见如下:"; if($vote[probs][$i][type]==2 || $vote[probs][$i][type]==3) { $voteres[$i][$etemNum[$i]+1]="本题通过投票征集的意见如下:"; } } //进行结果统计 $query = "SELECT * FROM sysvote_users WHERE svid = '".$vote[svid]."' ORDER BY suid"; $result = mysql_query($query,$link); $voteUserNum = mysql_num_rows($result); for($k = 0 ; $k < $voteUserNum ; $k ++) { $rows = mysql_fetch_array($result); $userres = explode("|",$rows[voteinfo]); for($i = 0 ; $i < count($vote[probs]) ; $i ++) { if($vote[probs][$i][type]==4)//问答 { $voteres[$i][0] .= "\n☆─────────────────────────────────────☆\n ".$rows[userid]." 于 ".time_format($rows[votetime])." 说道: \n".base64_decode($userres[$i]); } elseif($vote[probs][$i][type]==1 || $vote[probs][$i][type]==3)//多选 { $etemres = explode("&",$userres[$i]); for($l = 0 ; $l < $etemNum[$i] ; $l ++) $voteres[$i][(int)($etemres[$l])] ++ ; if($vote[probs][$i][type]==3 && $etemres[count($etemres)-1]) $voteres[$i][$etemNum[$i]+1] .= "\n☆─────────────────────────────────────☆\n ".$rows[userid]." 于 ".time_format($rows[votetime])." 说道: \n".base64_decode($etemres[count($etemres)-1]); } elseif($vote[probs][$i][type]==2) // 单选+问答 { $etemres = explode("&",$userres[$i]); $voteres[$i][(int)($etemres[0])] ++ ; if($etemres[1]) $voteres[$i][$etemNum[$i]+1] .= "\n☆─────────────────────────────────────☆\n ".$rows[userid]." 于 ".time_format($rows[votetime])." 说道: \n".base64_decode($etemres[1]); } else // 单选 { $voteres[$i][(int)($userres[$i])] ++ ; } }// i 循环 题目 }// k 循环 , 用户 //生成投票结果 $ann = "⊙ 参与投票的用户数:".$voteUserNum."\n". "⊙ 投票结果:\n\n\n"; // $res的结构 : 参与投票的用户数量|题目1|...|题目n|文本输出 $res = $voteUserNum; if($voteUserNum == 0) $voteUserNum = 1; $probType = array("单项选择","多项选择","单项选择(可发表意见)","多项选择(可发表意见)","问答"); for($i = 0 ; $i < count($vote[probs]) ; $i ++) { $ann .= "\n\n\n————————————————┤问题 ".($i+1)."├————————————————\n". "问题 ".($i+1).":".$vote[probs][$i][prob]."\n". "类型:".$probType[$vote[probs][$i][type]]."\n"; if($vote[probs][$i][type]==4) { $ann .= "\n".$voteres[$i][0]; //问答 $res .= "|".base64_encode($voteres[$i][0]); } else { $res .= "|"; for($j = 0 ; $j < $etemNum[$i] ;$j++) { if($j != 0) $res .= ","; $res .= $voteres[$i][$j+1]; $ann .= "\n选项 ".($j + 1).":".$vote[probs][$i][etems][$j]. " 票数:".$voteres[$i][$j+1]." 约占".(((int)($voteres[$i][$j+1]*1000 / $voteUserNum) ) / 10)."%"; }// j 循环 选项 if($vote[probs][$i][type]==2 || $vote[probs][$i][type]==3) { $ann .= "\n\n".$voteres[$i][$etemNum[$i]+1]; $res .= ",".base64_encode($voteres[$i][$etemNum[$i]+1]); } } }// i 循环 题目 $res .= "|".base64_encode($ann); $voteLog = $vote[logs]."\n管理员 ".$this->user["userid"]." 于 ".date("Y-m-d H:i:s")." 自 ".$_SERVER["REMOTE_ADDR"]." 结束本次投票;"; $query = "UPDATE sysvote_votes SET active = 0 , results = '".$res."' , logs = '".$voteLog."' WHERE svid = '".$vote[svid]."';"; mysql_query($query,$link); $query = "DELETE FROM sysvote_users WHERE svid = ".$vote[svid]; mysql_query($query,$link); if($annType==1) $annBoard = "vote"; elseif($annType==2) $annBoard = $sysVoteConfig["BOARD"]; elseif($annType==3) { $brdArr=array(); $boardID= bbs_getboard($annBoard,$brdArr); if( $boardID == 0) html_error_quit("指定的版面不存在!"); } if($annType!=0) { $title = "[公告] 系统投票结果"; $content = "【此篇文章是由自动发信系统所张贴】\n\n".$ann; $ret = bbs_postarticle($annBoard, $title, $content, 0 , 0 , 0, 0 ); } } function svCreateVoteStepOne() { global $currentuser,$sysVoteConfig; $this->user = $currentuser;?><center><p align=center><strong>创建系统投票</strong></p><form action="<?php echo $_SERVER["PHP_SELF"]."?act=create&step=2"; ?>" method="post"><table cellspacing=0 cellpadding=5 border=0 class=t1 width=90%> <tr> <td class=t2 colspan=2>第一步:设定基本信息</td> <tr> <td class=t3>管理员ID</td> <td class=t5><?php echo $this->user[userid]; ?></td> </tr> <tr> <td class=t3>当前时间</td> <td class=t5><?php echo date("Y-m-d H:i:s"); ?></td> </tr> <tr> <td class=t3>投票主题</td> <td class=t5> <input type="text" name="svsubject" size=50 class=b9 maxlength=255 value="<?php echo rawurldecode($_POST["svsubject"]); ?>">(显示在首页投票主题栏内) </td> </tr> <tr> <td class=t3>投票说明</td> <td class=t5> <textarea cols=50 rows=8 class=b9 name="svdesc"><?php echo rawurldecode($_POST["svdesc"]); ?></textarea> </td> </tr> <tr> <td class=t3>是否发表投票公告</td> <td class=t5> <input type=radio name="svannouce" class=b9 value=1 <?php echo ($_POST["svannouce"]==1)?"checked":""; ?>>在vote版发布公告 <input type=radio name="svannouce" class=b9 value=2 <?php echo ($_POST["svannouce"]==2)?"checked":""; ?>>在<?php echo $sysVoteConfig["BOARD"]; ?>版发布公告 <input type=radio name="svannouce" class=b9 value=0 <?php echo ($_POST["svannouce"]==0)?"checked":""; ?>>不在任何版面发布公告 </td> </tr> <tr> <td class=t3>投票时间</td> <td class=t5> <input type="text" name="svtimelong" size=2 class=b9 maxlength=2 value="<?php echo $_POST["svtimelong"]?$_POST["svtimelong"]:7; ?>">天 </td> </tr> <tr> <td class=t3>是否允许匿名用户投票</td> <td class=t5> <input type=radio name="svanonymous" class=b9 value=0 <?php echo ($_POST["svanonymous"]==0)?"checked":""; ?>>不允许 <input type=radio name="svanonymous" class=b9 value=1 <?php echo ($_POST["svanonymous"]==1)?"checked":""; ?>>允许 </td> </tr> <tr> <td class=t3>每个IP最多能投票数</td> <td class=t5> <input type="text" name="svvotesperip" size=2 class=b9 maxlength=2 value="<?php echo $_POST["svvotesperip"]?$_POST["svvotesperip"]:1; ?>">次(留空表示不限制IP投票数) </td> </tr> <tr> <td class=t2 colspan=2> <input type=submit value="下一步>>" class=b9> </td> </tr> <input type="hidden" name="svprobnum"" value="<?php echo (int)($_POST["svprobnum"]); ?>"><?php for($i = 0 ; $i< (int)($_POST["svprobnum"]) ; $i ++) {?> <input type="hidden" name="svprob<?php echo $i + 1; ?>" value="<?php echo $_POST["svprob".($i + 1)]; ?>"> <input type="hidden" name="svprobtype<?php echo $i + 1 ;?>" value="<?php echo (int)($_POST["svprobtype".($i+1)]); ?>"> <input type="hidden" name="svprobetem<?php echo $i + 1 ;?>" value="<?php echo $_POST["svprobetem".($i+1)]; ?>"><?php }?> </table></form></center><?php } function svCreateVoteStepTwo() { global $currentuser,$sysVoteConfig; $this->user = $currentuser;?><center><p align=center><strong>创建系统投票</strong></p><form name="svs2" id="svs2" action="<?php echo $_SERVER["PHP_SELF"]."?act=create&step=3"; ?>" method="post"><table cellspacing=0 cellpadding=5 class=t1 border=0 width=90%> <tr><td colspan=2 class=t2>第二步:确认基本信息</td></tr> <input type="hidden" name="svsubject" value="<?php echo $_POST["svsubject"]; ?>"> <tr> <td class=t3>投票主题</td> <td class=t5><?php echo html_format($_POST["svsubject"],FALSE,FALSE); ?> </td> </tr> <input type="hidden" name="svdesc" value="<?php echo $_POST["svdesc"]; ?>"> <tr> <td class=t3>投票说明</td> <td class=t5><?php echo html_format($_POST["svdesc"],TRUE,FALSE); ?> </td> </tr> <input type="hidden" name="svannouce" value="<?php echo (int)($_POST["svannouce"]); ?>"> <tr> <td class=t3>投票公告</td> <td class=t5> <?php switch($_POST["svannouce"]) { case 1: echo "在Vote版发布公告"; break; case 2: echo "在".$sysVoteConfig["BOARD"]."版发布公告"; break; default: echo "不发布投票公告"; } ?> </td> </tr> <input type="hidden" name="svtimelong" value="<?php echo (int)($_POST["svtimelong"]); ?>"> <tr> <td class=t3>投票时间</td> <td class=t5><?php echo (int)($_POST["svtimelong"]); ?> </td> </tr> <input type="hidden" name="svanonymous" value="<?php echo (int)($_POST["svanonymous"]); ?>"> <tr> <td class=t3>是否允许匿名投票</td> <td class=t5><?php echo ((int)($_POST["svanonymous"])==0)?"不允许":"允许"; ?></td> </tr> <input type="hidden" name="svvotesperip" value="<?php echo (int)($_POST["svvotesperip"]); ?>"> <tr> <td class=t3>每个IP限制投票次数</td> <td class=t5><?php echo ((int)($_POST["svvotesperip"])==0)?"不限制":$_POST["svvotesperip"]."次"; ?></td> </tr> <tr> <td class=t2 colspan=2>请核对上面投票信息,确认无误后请输入本次投票问题个数,单击"下一步";否则返回"上一步进行修改.</td> </tr> <tr> <td class=t3>问题个数</td> <td class=t5><input type="text" class="b9" name="svprobnum" value="<?php echo max(1,(int)($_POST["svprobnum"])); ?>" size="3" maxlength="3">个</td> </tr> <tr> <td class=t2 colspan=2> <input type="button" value="<<上一步" class="b9" onclick="document.svs2.action='<?php echo $_SERVER["PHP_SELF"]; ?>?act=create&step=1';document.svs2.submit();"> <input type="submit" value="下一步>>" class="b9"> </td> </tr></table><?php for($i = 0 ; $i< (int)($_POST["svprobnum"]) ; $i ++) {?> <input type="hidden" name="svprob<?php echo $i + 1; ?>" value="<?php echo $_POST["svprob".($i + 1)]; ?>"> <input type="hidden" name="svprobtype<?php echo $i + 1 ;?>" value="<?php echo (int)($_POST["svprobtype".($i+1)]); ?>"> <input type="hidden" name="svprobetem<?php echo $i + 1 ;?>" value="<?php echo $_POST["svprobetem".($i+1)]; ?>"><?php }?> </form>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?