发新话题
打印

[原创] 用Dreamweaver MX 2004制作防止串票的投票系统

本帖已经被作者加入个人空间

[原创] 用Dreamweaver MX 2004制作防止串票的投票系统

kokotaro写的 用Dreamweaver MX 2004制作ASP动态网站(投票系统篇) 我很久以前就照着做完了,教程后面提到防止串票的问题,因为我也是一个asp 程序的初学者,所以有问题总是想着怎么去解决,在自己的学习过程中也看了一些教材上面讲的不是很明白,通过自己的反复实践操作,终于解决了这个问题,很高兴啊,所以发个贴和大家一起学习讨论,不过在学习教程之前最好先学一下kokotaro的投票系统的制作哦!
好了开始吧。

一、程序说明及投票系统流程图fficeffice" />

总的来说,这个投票系统也分为3个模块:投票模块投票处理模块结果显示模块!不过还得再加上一个重复投票后的转向页面。当然是做完了kokotaro写的投票系统之后,在进行修改的了!!!所以她那上面写过的我就不再说了。


*防止重复投票的处理方法
我是按照教材上说的利用客户端的IP地址来防止串票。采用这个方案,当客户端的计算机首次进入投票系统时, 系统会把本机的IP地址存储到服务器端数据库中的一个表中,在提交投票信息时,投票系统会对该机的IP地址进行检验,若数据库中没有该机的IP地址,则提交到服务器端写入数据库,否则禁止执行而转向sorry.asp页面提醒投票者已经投过票了。

TOP

二、 数据库的添加fficeffice" />

在原有数据库文件tvote.mdb中添加一 tvoteIP 表,表内只有一个字段用来保存客户端计算机的IP地址。如下图所示:
[upload=gif]UploadFile/2005-11/20051117102150538.gi

附件

2005-11/20051117102150538.gif (8.29 KB)

2005-11-17 18:21, 下载次数: 180

TOP

三、 投票系统主页面的修改制作(vote.aspfficeffice" />

1) 打开做好的投票vote.asp页面,在绑定面板中选择“请求变量”,在类型里选择Request.ServerVariable,名称文本框中输入Remote_ADDR。可以获得客户端的IP地址。
[upload=gif]UploadFile/2005-11/20051117102535819.gi

[upload=gif]UploadFile/2005-11/20051117102618704.gi

附件

2005-11/20051117102535819.gif (3.74 KB)

2005-11-17 18:25, 下载次数: 143

2005-11/20051117102618704.gif (5.7 KB)

2005-11-17 18:26, 下载次数: 142

TOP

2) 把光标移到“提交”按钮处,插入表单中的隐藏域,在其属性面板中将其名称改为fip,如下图所示:
[upload=gif]UploadFile/2005-11/20051117102825767.gi

3) 单击属性面板---值后的闪电按钮弹出动态数据窗口,


[upload=gif]UploadFile/2005-11/20051117103331988.gi


选择域框中的ServerVariable.Remote_ADDR,经过这样设置后的隐藏区域属性如下图所示,这样就设置好了获得客户端的IP地址的功能。
[upload=gif]UploadFile/2005-11/20051117103431260.gi

附件

2005-11/20051117102825767.gif (12.76 KB)

2005-11-17 18:28, 下载次数: 127

2005-11/20051117103431260.gif (5.75 KB)

2005-11-17 18:34, 下载次数: 141

2005-11/20051117103331988.gif (12.27 KB)

2005-11-17 18:33, 下载次数: 142

TOP

4) 在绑定面板中选择“请求变量”,在类型里选择Request.Form,名称文本框中输入rbResult(单选按钮的名称),用来获取投票时所做选择的单选按钮的值。fficeffice" />


[upload=gif]UploadFile/2005-11/20051117103727772.gi

这时绑定面板如下图所示:

[upload=gif]UploadFile/2005-11/20051117103812983.gi

5) 在服务器行为面板中选择“插入记录”,以便本机在首次使用投票系统时能把本机的IP地址插入到服务器端得数据库表tvoteIP中去。进行如下图所示设置。

[upload=gif]UploadFile/2005-11/20051117104526791.gi


点击浏览按钮后,弹出选择文件窗口,选择插入后转到add.asp(投票处理)页面,这样的选择后,只有首次投票时的IP地址存贮到了数据库表中,并没有将投票信息传递给投票处理页面,所以我们还需要将投票信息传递到投票处理页面。
[upload=gif]UploadFile/2005-11/20051117104111478.gi

点击参数按钮进行参数传递的设置,
[upload=gif]UploadFile/2005-11/2005111710414840.gi

给我们要传递的参数(即投票信息)起名为result,点击值后的闪电按钮,在弹出的动态数据窗口中选择Form.rbResult,用来获取投票时所做选择的单选按钮的值。

附件

2005-11/20051117103727772.gif (5.45 KB)

2005-11-17 18:37, 下载次数: 145

2005-11/20051117104111478.gif (12.51 KB)

2005-11-17 18:41, 下载次数: 150

2005-11/20051117103812983.gif (6.07 KB)

2005-11-17 18:38, 下载次数: 133

2005-11/2005111710402791.gif (10.91 KB)

2005-11-17 18:40, 下载次数: 135

2005-11/20051117104526791.gif (10.97 KB)

2005-11-17 18:45, 下载次数: 127

2005-11/2005111710414840.gif (7.64 KB)

2005-11-17 18:41, 下载次数: 148

TOP

[upload=gif]UploadFile/2005-11/20051117104851956.gi

这时参数窗口如下图所示:
[upload=gif]UploadFile/2005-11/20051117104930103.gi

确定后插入记录面板如下图所示:

[upload=gif]UploadFile/2005-11/2005111710402791.gi


附件

2005-11/20051117104851956.gif (10.24 KB)

2005-11-17 18:48, 下载次数: 140

2005-11/20051117104930103.gif (7.61 KB)

2005-11-17 18:49, 下载次数: 132

TOP

6) 新建一sorry.asp页面,在页面内输入文字:“对不起,您已经投过票了!”并制作“查看结果(转向result.asp)”的链接。
[upload=gif]UploadFile/2005-11/2005111710524579.gi

7) 回到vote.asp页面,在服务器行为面板中选择“检查新用户”,进行如下图所示设置,来检验IP地址是否已经存在。
[upload=gif]UploadFile/2005-11/20051117105344280.gi

至此防止串票的投票页面就修改制作完毕。fficeffice" />

附件

2005-11/20051117105344280.gif (6.19 KB)

2005-11-17 18:53, 下载次数: 144

2005-11/2005111710524579.gif (2.37 KB)

2005-11-17 18:52, 下载次数: 134

TOP

四、 更新页的修改制作(add.asp)fficeffice" />

1) 打开做好的投票处理add.asp页面,在服务器行为面板双击原来添加的更新命令,将更新页的更新命令修改如下图所示:

[upload=gif]UploadFile/2005-11/20051117105734625.gi

在vote.asp页中我们已将表单内的单选按钮命名为rbResult,值分别设为fGood、fMid、fBad。并且已经设置了首次投票时,传递投票信息的参数为result,所以Request.QueryString("Result")的值一定是表vote的一个字段名。所以这条SQL语句的意思就是使某一字段加1,即在相应的字段中记下了一个投票者!

2) add.asp页面的代码最后添加如下语句:


<% Response.Redirect("result.asp") %>


转向投票结果result.asp页面。使得投票后直接看到投票结果。



到此为止防止串票的投票系统就已经修改制作完成了,对于投票结果显示页面(result.asp)我们并不需要进行修改。浏览一下看看吧!!!

附件

2005-11/20051117105734625.gif (15.15 KB)

2005-11-17 18:57, 下载次数: 149

TOP

真是不错,半夜加班学习...

TOP

都是人才~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

TOP

喜欢楼主的教程

TOP

请问楼主:
我在更新命令里面的语句如下,为什么也能同样达到投票增加的效果呢?
UPDATE tVote
SET strUpdate=strUpdate
WHERE

TOP

楼上的,你可能是作完后能正常投票计数,
可如果你再次打开那个更新命令,就如你上面的语句一样,这时如果你确定再运行刚才的页面就要出错了,如果取消就没事。
这可能是DW里的问题,我做的时候也这样。

TOP

谢谢楼主的解答,主要是这个不好测试,我每投一次票又得去数据库里删IP地址,不然就不能继续投票了,呵呵。删除IP后再投票,计数器还是达到了加1的效果。更新命令我也打开检查过的。或许就是你说的那样,可能是DW的问题。

TOP

很喜欢,你发的贴字!!!太好了

TOP

这是很久之前发的帖子了,不过能给别人提供帮助,感到很高兴!

TOP

楼主我没有看到啊

楼主我没有看到你做的投票系统啊!

TOP

我原来发的帖子不是这样的,不知怎么回事,现在看起来有点儿乱。
这个我忘了当初有没有放源程序上来,如果你想看的话,我可以个发给你。

TOP

楼主。我想看你的源码,请发到我的邮箱,谢谢:

fchnipj@gmail.com

TOP

谢谢楼主!

TOP

请楼主发个源文件给我,行吗?anlong511@163.com

TOP

感谢

非常好!