吴春艳
摘要:在线投票是目前做网上调查时非常实用的功能。该文介绍了PHP设计投票管理系统的设计方法和实现思路,并给出了具体的实现代码。
关键词:PHP;库;数据库
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)35-8429-02
Designing Online Voting with PHP Programming Language
WU Chun-yan
(Henan Traffic and Senior Technical school, Zhumadian 463000, China)
Abstract:The voting system is very popular in on survey.The article introduce the way and the realized thread with php programming language,and it provides the detailed codes.
Key words: PHP; library; database
1 概述
投票系统可以实现在线投票、在线查看投票的结果。该文在对投票系统中的关键技术,如动态生成投票主题及选项、通过3D饼形图分析投票结果、有效地限制投票次数等方面进行了介绍。
2 数据库设计
PHP设计程序时,往往采用MySQL作为后台数据库。目前MySQL是完全网络化的跨平台的关系数据管理系统,具用体积小,速度快,源码开放,安全性高等特点。本系统数据库名称tp,主要涉及两张表。
2.1 投票主题表tpzt,如表1所示
2.2 单项投票选项数据表dxtpxx,如表2所示
3 程序实现
3.1 动态生成投票主题和选项
通过Web页面来实现主题及选项的添加,实际上是将表单中的数据添加至数据库表中。部分程序代码如下。
<? Php
$cx=”select * from tpzt”
$jg=mysql_query($cx);
While($myrow=mysql_fetch_array($result)){
?>
…
If ($submiit=”单选” and $files[‘tppic][‘name]!=””) { //判断是否单选,并且有图片上传
$tptp=$_FILES[‘tppic][‘size];
3.2 通过3D饼形图分析投票结果
使用3D饼形图能够比较直观地展示投票结果,3D饼图的创建使用的是jpgraph类库。Jpgraph是一个强大的绘图组件,能根据用户的需要绘制任意图形。用户只要提供用户数据,就可以调用绘图函数把处理的数据填进去自动绘制。另外jpgraph需要类库的支持,如果用户 jpgraph类库仅对当前有效,只需将jpgraph压缩包下的src文件夹中的全部文件复制到网站所在目录的文件夹中即可。
应用jpgraph创建3D饼形图时,首先需要连结数据库,应用include_once语句引用指定的文件,然后编写代码实现投票数量的统计,最后创建Graph对象,设置字体及图例的字体和画布的位置,将图形输出。关键代码如下。
<?php
Include(“conn/conn.php”)
Include_once(“jpgraph/jpgraph/jpgraph_pie.php”)
Include_once(“jpgraphp/jpgraph_3d.php”);
$query=mysql_0uery(“select sum(tbx) as tpm from tbdx where tbzt=$GET[votezt]”);
$graph=new PieGraph(650,300),auto);
$graph→SetShadow( ); //创建画布阴影
$graph→title→Set(“应用3D饼形图统计优秀负责人”);
$graph→title→SetFont(FF_SIMSUN,FS_BOLD);
$graph→legend→SetFont(FF-SIMSUN,FS_NORMAL); //设置图例字体
$p2=new PiePlot3D($resultes) //创建3D饼形图对象
$p2→SetLegends($vote_content);
.?>
3.3 使用Cookie投票限制
Cookie是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。使用Cookie控制重复投票的原理是:当用户使用投票系统时,系统将判断当前客户端的Cookie的值是否为空,若为空则可以进行投票。关键代码如下。
While(list($name,$value)=each($_post)){
$k+=$name;
If(is_numeric($name)==true) {
Mysql_qurery(“update tpdx set tps= tps+1 where tp tbid=”$name””);
}
If($k=0)
Echo “”;
}
Else { if ($v_flag=0) {
$sql=”update tp_jl set tp_jls=tp_jls+1 where tp_jlh=$r”;
Mysql_query($sql,$conn);
$_SESSION[tp]=1
3.5 使用IP 限制投票
Cookie和Session都是对投票的时间间隔进行控制,并没有真正完全对重复投票进行控制,通过IP地址可以限制重复投票,它的主要原理:当用户在在客户端投票时,先获取得IP地址,如果该IP地址存在,则说明 已经进行过投票。关键的代码如下。
$ip=getenv(“REMMOTE_ADDR”); //获取客户端的IP地址
If($submit==true) {
If(tb_pb_h==””) {
Echo“