一个 基本的投票系统 即 根据一个主题 以提供投票选项为条件选出正确的选择项 (一个或多个),然后对投票选项进行分析和调查等等。
为了使得一个投票系统更完善和合理,可以增加注册用户 控制IP的投票次数和权限等功能。
一个基本的投票系统 流程图可以如下
步骤:
1。创建一个数据库,通过数据库可以来存储投票的主题,内容信息,以及投票的结果,通过数据库来存储注册用户的信息以及控制Ip等辅助配置功能。
2.创建用户注册和登录模块,通过email地址来激活注册的用户,只有成功激活的用户才可以进行投票
3。创建投票主题和投票内容浏览模块。其中IP不能重复投票。通过某种图像分析图来分析投票的结果。
4.后台管理模块,添加投票主题内容和选项,并可以设计投票分为单选或多选。
支持图片功能 可以后期加上。
创建如下的数据库
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- 数据库: `xhvote_gbk` -- -- -------------------------------------------------------- -- -- 表的结构 `xh_config` -- CREATE TABLE IF NOT EXISTS `xh_config` ( `username` varchar(100) NOT NULL COMMENT '管理员名字', `password` varchar(100) NOT NULL COMMENT '管理员密码', `webname` varchar(100) NOT NULL, `weburl` varchar(100) DEFAULT NULL, `systemurl` varchar(100) DEFAULT NULL, `restrictip` int(11) DEFAULT NULL COMMENT '是否限制投票的IP', `allowview` int(11) DEFAULT NULL COMMENT '是否允许用户查看投票结果', `refusetime` int(11) DEFAULT NULL COMMENT '限制某个ip多长时间以后才可以再次投票', `getuserinfo` int(11) DEFAULT NULL COMMENT '是否获取用户系统信息', PRIMARY KEY (`username`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk COMMENT='系统配置表'; -- -------------------------------------------------------- INSERT INTO `xh_config` (`username`, `password`, `webname`, `weburl`, `systemurl`, `restrictip`, `allowview`, `refusetime`, `getuserinfo`) VALUES ('admin', '21232f297a57a5a743894a0e4a801fc3', '雪晖在线', 'http://www.xhway.net', 'http://localhost:8081/xhvote_gbk/', 0, 1, 12, 1); -- -- 表的结构 `xh_ip` -- CREATE TABLE IF NOT EXISTS `xh_ip` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sid` int(11) NOT NULL COMMENT '投票系列的主键', `ip` varchar(20) DEFAULT NULL COMMENT '用户IP', `vtime` datetime DEFAULT NULL COMMENT '用户最后访问时间', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=26 ; -- -------------------------------------------------------- -- -- 表的结构 `xh_question` -- CREATE TABLE IF NOT EXISTS `xh_question` ( `id` int(11) NOT NULL AUTO_INCREMENT, `question` varchar(100) NOT NULL, `imgurl` varchar(100) NOT NULL, `linkurl` varchar(200) DEFAULT NULL, `sid` int(11) NOT NULL, `tid` int(11) NOT NULL, `ps` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=233 ; -- -------------------------------------------------------- -- -- 表的结构 `xh_subject` -- CREATE TABLE IF NOT EXISTS `xh_subject` ( `id` int(11) NOT NULL AUTO_INCREMENT, `subject` varchar(40) NOT NULL, `qx` datetime NOT NULL COMMENT '主题过期时间', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=33 ; -- -------------------------------------------------------- -- -- 表的结构 `xh_title` -- CREATE TABLE IF NOT EXISTS `xh_title` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(40) NOT NULL, `sid` int(11) NOT NULL, `ms` int(11) NOT NULL, `vcount` int(11) NOT NULL, `listtype` int(11) NOT NULL, `listrows` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=30 ; -- -------------------------------------------------------- -- -- 表的结构 `xh_userinfo` -- CREATE TABLE IF NOT EXISTS `xh_userinfo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(40) NOT NULL, `sex` varchar(6) NOT NULL, `idcard` varchar(20) NOT NULL, `tel` varchar(20) NOT NULL, `address` varchar(50) NOT NULL, `email` varchar(30) NOT NULL, `content` varchar(100) NOT NULL, `sid` varchar(10) NOT NULL, `qids` varchar(50) NOT NULL, `ip` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=54 ;
改写数据库连接
<?php header("Content-type:text/html;charset=gbk"); $conn=mysql_connect("localhost","root","root"); if(!$conn){ die("Can not connect:".mysql_error()); } $dbconn=mysql_select_db("xhvote"); if(!$dbconn){ die("Can not select this database:".mysql_error($conn)); } @session_start();//启动session会话 mysql_query("SET NAMES 'gbk'");//设置字符集和页面代码统一 require_once("function.php");//加载函数库 require_once("config.php");//加载配置信息 ?>
主要的核心逻辑
<?php function getip() { if (isset($_SERVER)) { /*在局域网通过透明代理访问外部的web服务器时, *在web服务器端, *通过header HTTP_X_FORWARDED_FOR 可以知道代理服务器的服务器名以及端口, */ if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) { $realip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } elseif (isset($_SERVER["HTTP_CLIENT_IP"])) { $realip = $_SERVER["HTTP_CLIENT_IP"]; } else { $realip = $_SERVER["REMOTE_ADDR"]; } } else { /*string getenv ( string varname )*Returns the value of the environment variable varname, or FALSE on *an error. */ if (getenv("HTTP_X_FORWARDED_FOR")) { $realip = getenv("HTTP_X_FORWARDED_FOR"); } elseif (getenv("HTTP_CLIENT_IP")) { $realip = getenv("HTTP_CLIENT_IP"); } else { $realip = getenv("REMOTE_ADDR"); } } return $realip; } function convertWk($wk){ $wk=str_replace("1","一",$wk); $wk=str_replace("2","二",$wk); $wk=str_replace("3","三",$wk); $wk=str_replace("4","四",$wk); $wk=str_replace("5","五",$wk); $wk=str_replace("6","六",$wk); $wk=str_replace("0","日",$wk); return $wk; } function showColor($i) { if ($i%2==0) $showColor = "#99CC00"; else if ($i%3==0) $showColor="#FF00FF"; else $showColor="#CC99FF"; return $showColor; } function head() { echo "<meta http-equiv=\"Content-Language\" content=\"zh-cn\">\r\n"; echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gbk\">\r\n"; echo "<meta http-equiv=\"author\" content=\"雪晖\">\r\n"; echo "<meta http-equiv=\"keyword\" content=\"雪晖,雪晖软件,投票,程序开发,程序定制\">\r\n"; echo "<meta http-equiv=\"description\" content=\"www.xhway.net,www.xhway.com,www.xhway.cn,雪晖软件拥有开发从C,C++,.NET,JAVA,ASP,PHP,DELPHIE等大部分语言WEB程序与软件系统的技术实力,欢迎大家定制各类程序!\">\r\n"; echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"css/css.css\">\r\n"; } function successmsgbox() { echo "<script language='javascript' type='text/javascript'>alert('登陆成功');</script>"; } function failmsgbox($msg) { echo "<script language='javascript' type='text/javascript'>alert('".$msg."');location.href='login.php';</script>"; } function logout() { $_SESSION["admin"]=""; redirect('login.php'); } function redirect($url) { die("<script language='javascript' type='text/javascript'>location.href='".$url."';</script>"); } function check() { if(!isset($_SESSION["admin"]) || $_SESSION["admin"]=="") { echo "<script language='javascript' type='text/javascript'>alert('登陆失败或超时,请重新登陆!'); if(!window.top) { location.href='login.php'; } else { window.top.location.href='login.php'; } </script>"; } } function successmsg($msg) { echo "<html>\r\n"; echo "<head>\r\n"; head(); echo "<title>【雪晖投票系统】</title>\r\n"; echo "</head>\r\n"; echo "<body>\r\n"; echo "<table width=\"40%\" border=\"0\" align=\"center\" cellpadding=\"5\" cellspacing=\"1\" bgcolor=\"#BBDDFF\" id=\"table2\" style=\"border-collapse: collapse; margin-top:50px;\">\r\n"; echo "<tr>\r\n"; echo "<td bgcolor=\"#ECF5FF\" align=\"center\" height=\"100\">\r\n"; echo "<label id=\"errmsg\" name=\"errmsg\">".$msg."</label><br><br>\r\n"; echo "<a href=\"".$_SERVER["HTTP_REFERER"]."\">点此返回再次操作</a> <a href=\"admin_index.php\" target=\"_top\">进入管理首页</a>\r\n"; //返回时会自动刷新页面 echo "</td>\r\n"; echo "</tr>\r\n"; echo "</body>\r\n"; echo "</html>\r\n"; } function errormsg($msg) { echo "<html>\r\n"; echo "<head>\r\n"; head(); echo "<title>【雪晖投票系统】</title>\r\n"; echo "</head>\r\n"; echo "<body>\r\n"; echo "<table width=\"40%\" border=\"0\" align=\"center\" cellpadding=\"5\" cellspacing=\"1\" bgcolor=\"#BBDDFF\" id=\"table2\" style=\"border-collapse: collapse; margin-top:50px;\">\r\n"; echo "<tr>\r\n"; echo "<td bgcolor=\"#ECF5FF\" align=\"center\" height=\"100\">\r\n"; echo "<label id=\"errmsg\" name=\"errmsg\">".$msg."</label><br><br>\r\n"; echo "<a href=\"".$_SERVER["HTTP_REFERER"]."\">点此返回</a>"; //返回时会自动刷新页面 echo "</td>\r\n"; echo "</tr>\r\n"; echo "</body>\r\n"; echo "</html>\r\n"; } function pager($recordcount,$pagesize,$curpage,$pages,$key,$url) {//$recordcount 记录总数 //$pagesize 每页记录数 //$curpage 当前页面号 //$pages 要显示多少个页面 $pages=1 就显示两个页面 $pages=2就显示三个页面 //$key 关键字值 //$url 分页链接到哪个页面 global $outhtml; global $firstcount; $totalpage = max(ceil($recordcount/$pagesize),1); if($curpage<0 || $curpage>$totalpage) $curpage=1; $outhtml = "共 ".$recordcount." 条记录 第 ".$curpage." 页/共 ".$totalpage." 页 每页 ".$pagesize." 条记录 "; $pageno = $curpage; if($pageno<0 || $pageno>$totalpage) $pageno=1; $firstcount=$pagesize*($pageno-1); $outhtml.="<a href='$url?page=1&k=$key'><<</a> "; //$showpage = min($pages,$totalpage); //要显示的页面号 if($pages>$totalpage) { $startpage=1; $endpage=min($startpage+$pages,$totalpage); } else { $startpage=max($totalpage-$pages,1); $startpage=min($startpage,$curpage); $endpage=min($startpage+$pages,$totalpage); } if($pageno>1) { $outhtml.="<a href='$url?page=".($pageno-1)."&k=$key'><</a> "; } else { $outhtml.="<a href='$url?page=1&k=$key'><</a> "; } for($i=$startpage;$i<=$endpage;$i++) { if($curpage==$i) { $outhtml.="<font color='#FF0000'>$i</font> "; } else { $outhtml.="<a href='$url?page=$i&k=$key'>$i</a> "; } } if($pageno<$totalpage) { $outhtml.="<a href='$url?page=".($pageno+1)."&k=$key'>></a> "; } else { $outhtml.="<a href='$url?page=$totalpage&k=$key'>></a> "; } $outhtml.="<a href='$url?page=$totalpage&k=$key'>>></a> "; } //格式化日期 function mkDate($v) { do { if (empty ($v)) break; $ymdhis = split(' ', trim($v)); if (count($ymdhis) < 1) break; $ymd = split('-', $ymdhis[0]); $his = split(':', $ymdhis[1]); return mktime($his[0], $his[1], $his[2], $ymd[1], $ymd[2], $ymd[0]); } while (false); return time(); } function deldir($dir) { if(!is_dir($dir)){ return false; } $dh=@opendir($dir); while ($file=@readdir($dh)) { if($file!="." && $file!="..") { $fullpath=$dir."/".$file; if(!is_dir($fullpath)) { @unlink($fullpath); } else { deldir($fullpath); } } } @closedir($dh); if(@rmdir($dir)) { return true; } else { return false; } } ?>
相关推荐
https://blog.csdn.net/weixin_39934453/article/details/132242216PHP傻瓜也能搭建自己框架,手把手搭建一个mvc框架PHP最简单自定义自己的框架(一) PHP最简单自定义自己的框架创建目录结构(二) PHP最简单自定义...
《Blender图解教程:手把手教做一个马里奥金币》教程的附件下载 原教程地址:https://orzgame.blog.csdn.net/article/details/105682924
总共两个part 此为part2">《手把手教你构建自己的Linux系统》以如何使用源代码搭建一套Linux系统这一独特的角度介绍Linux系统的构成 主要内容包括走进GNU Linux LFS Linux系统定制原理 制作GNU Linux系统的准备工作 ...
【功能描述】 用户前台功能:商品分类多级展示、商品搜索、商品查看、用户注册登录、收藏商品、加入购物车、提交订单、个人心信息管理、收货地址管理、收藏管理、评价管理、订单管理等。后台管理功能(脚手架的...
《手把手教你构建自己的Linux系统》以如何使用源代码搭建一套Linux系统这一独特的角度介绍Linux系统的构成,主要内容包括走进GNU/Linux、LFS,Linux系统定制原理,制作GNU/Linux系统的准备工作,本地定制GNU/Linux...
《手把手教你构建自己的Linux系统》以如何使用源代码搭建一套Linux系统这一独特的角度介绍Linux系统的构成,主要内容包括走进GNU/Linux、LFS,Linux系统定制原理,制作GNU/Linux系统的准备工作,本地定制GNU/Linux...
ssh 项目 创建 教程 手把手教你实现第一个SSH项目
《Blender图解教程:手把手教你做一个马里奥金币 之 纯建模方法》教程的附件下载 原教程地址:https://orzgame.blog.csdn.net/article/details/105729889
《手把手教你构建自己的Linux系统》以如何使用源代码搭建一套Linux系统这一独特的角度介绍Linux系统的构成,主要内容包括走进GNU/Linux、LFS,Linux系统定制原理,制作GNU/Linux系统的准备工作,本地定制GNU/Linux...
《手把手教你构建自己的Linux系统》以如何使用源代码搭建一套Linux系统这一独特的角度介绍Linux系统的构成,主要内容包括走进GNU/Linux、LFS,Linux系统定制原理,制作GNU/Linux系统的准备工作,本地定制GNU/Linux...
003《老HRD手把手教你做绩效考核》.pdf
手把手教你用excel做一套电脑派位摇号系统.pdf
烨子女神手把手教你学Linux系统之第9章.mp4 165.6M2019-07-26 16:24 烨子女神手把手教你学Linux系统之第8章.mp4 214.5M2019-07-26 16:24 烨子女神手把手教你学Linux系统之第7章[vxia.net].mp4 162M2019-07-26 16:24 ...
本课程面向初学者,内容涵盖以太坊去中心化应用开发相关的诸多概念,如区块链、ganache仿真器、Solidity语言、solc编译器、web3js库、通证(代币)发行等,并将手把手地教大家如何构建一个基于以太坊的完整去中心化...
手把手教你自作系统盘。详细的请看看,有需要教程之类的留言的给我留言。
在本教程“手把手教你做问答系列”中,我们将深入探讨如何有效地进行问答系统的构建与优化。这个系列的目的是帮助初学者以及有一定经验的开发者掌握问答系统的核心技术和实践方法,从而能够创建出高质量的问答解决...
本篇文章将从零开始,手把手教你如何构建一个属于自己的Linux系统。 #### 二、准备工作 在开始构建自己的Linux系统之前,我们需要做一些准备工作: 1. **选择合适的版本**:目前Linux From Scratch (LFS) 的最新...
手把手的教你做光立方,从焊接开始,购买所需的发光二极管,通过单片机控制,产生光立方的效果 新手入门即可使用