您的位置:首页网页设计PHP实例 → 一个简单的PHP投票程序

一个简单的PHP投票程序

时间:2004/11/7 3:22:00来源:本站整理作者:蓝点我要评论(0)

分析:

我们利用一个文件(data.dat)来存储投票栏目.每个栏目占据一行.

这样一来,便可随意加入和减去想要投票的栏目.



我们再利用一个文件(votes.dat)来存储我们的投票结果.

并纪录最近一位投票者的IP地址,简单的防止一人多投.



所以,您应该在该程序目录下自行建立两个文件data.dat和votes.dat



程序运行过程部分



程序运行时应该先有一个投票的HTML表单,等待投票.

当有人在HTML表单上投票时,判断它的IP是否为最近一位投票者的IP,

如果此人刚刚投过票,则两个值应该相等,显示"您已投过票了,谢谢您的参与!"  

如果此人没投过票,则两个值不等,将它的投票写入文件(votes.dat)  

(这里得到投票者的IP方法是:Web客户机在对服务器发送请求时需要提供一个表识,

这个表识就存储在环境变量REMOTE_ADDR里,我们引用它就可以了.)



最后是显示投票结果,通常我们是以"条形图表+百分数"来显示投票情况.

所以,我们要选择一个颜色单一的矩形图形,以适应横向缩放的要求.  



--------------------------------------------------------------------------------



程序代码部分 可下载程序代码



  



  //投票栏目存储文件,您可更改文件名

$data="data.dat";  

//投票结果储存文件  

$votes="votes.dat";



//用以显示投票结果比例的图形文件名图形文件名,  

//用单一颜色的矩形较好,方便投票结果横向缩放,  

//自行上传到本程序目录下  

$path_img="vote.gif";



//投票标题

$poll_name="您喜欢我的哪个栏目?";  





// 以下部分不需改动 //  





//打开投票栏目文件,并以数组的形式将全部内容存在变量$dataf中备用  

$dataf=file($data);  

if ($go !=1)



{  

//显示投票程序表单  

echo "$poll_name
n";  

echo "

";  

for ($i=0; $i<=count($dataf)-1; $i++)  



{  

echo "$dataf[$i]
n"; }  



echo "";  

echo "

";  

echo "

";  

echo "查看结果";  



}  



else  



{  

// $go==1 表示有人投票, // 现在将投票情况以另外一种方式从文件中读出 $file_votes=fopen($votes, "r");  

$line_votes=fgets($file_votes, 255);  

fclose($file_votes);



// 并将数据按指定的字串切开,再将字串传回到阵列变量中  

$single_vote=explode("|", $line_votes);  



//准备写入投票结果  

if ($result!=1)  



{  

//检查IP地址是否重复  

$file_votes=file($votes, "r");  

if ($REMOTE_ADDR == $file_votes[1])  



{  

echo "

您已投过票了,谢谢您的参与!

";

exit;

}



//如果IP不重复,则执行以下程序  

$ficdest=fopen($votes, "w");  

for ($i=0; $i<=count($dataf)-1; $i++)



{  

//判断投了那一个栏目  

if ($i == $vote)  



{  

$single_vote[$i]+=1;

}  



//将数据写回文件  

fputs($ficdest, "$single_vote[$i]|");  



}  





//写入投票者IP  

fputs($ficdest, "n$REMOTE_ADDR");  

fclose($ficdest);

$result=1; //投票成功



}  





//写入投票结果后并显示投票结果  

if ($result==1)  



{ echo "";  

for ($i=0; $i<=count($dataf)-1; $i++)  



{  

//取得投票总数

$tot_votes+=$single_vote[$i];  

}  



for ($i=0; $i<=count($dataf)-1; $i++)  



{  

//计算百分比  

$stat[$i]=$single_vote[$i]/$tot_votes*100;  

echo "";  

}  



echo "

";  

echo "$dataf[$i]
";  

echo "";  

//输出百分数 printf("%.1f", "$stat[$i]");  

echo "%
"; //输出本栏目投票数  

echo "$single_vote[$i]"; echo "

";  

echo "总投票数:$tot_votes ";  

}



}



?>  

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 我的php文件怎么打开_php运算符怎么写 php 如何生成静态页面的函数PHP生成图片缩略图PHP session常见问题集锦及解决办法PHP实现同步远程Mysql

人气排行 DEDE在文章列表文章没有缩略图的不显示图片php+mysq修改用户密码我的php文件怎么打开_如何打开php文件的办法FCKeditor的配置和使用方法使用dedecms建站教程PHP+Ajax实现分页技术图片存储与浏览一例Linux+Apache+PHP+MySQLPHP生成图片缩略图