关于PHP写的投票网站之刷票风云
最近学校导航站找我让我给他们做一个投票系统的网站,我一口答应了,他们只是要求不准刷票情况出现,我也一口答应了。。我答应的太干脆了。
然后我便开始做这个网站,网站做出来没花太多时间,并且我是用IP来判断是否投过票,现在想起来,IP,唉,,,痛啊啊啊啊啊。
投票的前一天,我给导航站的看网站,他们觉得可以,并且希望只能用学校内网投票,然后又改,还好服务器是在学校里面的,内网的IP可以直接访问的,在IP处理这一方面直接用的是正则表达式,只允许172.16.0.0到172.32.255.255的IP投票,然后我天真的以为这样就可以防止刷票了。
投票的第一天,很多队伍都很为内网投票很头疼,我告诉了他们可以用VPN连到校内网进行投票。我虽然是这么一说了,但是万万没有想到,每连一次VPN,IP就换一次,意思说刷票情况又出现了。为了防止这一情况,我设置了cookie,保存当前用户投票的队伍,若是刷票的话,下一票肯定还是这个队,所以我就这么做了,同时我还设置了验证码。我再次天真的以为刷票风云就可以这么结束了,可万万没想到厉害的还在后面,先上一张图:
我呵呵勒个呵呵,在跟我开玩笑吗?百度一下一大片一大片的软件,自动更换IP,自动输入验证码,啊啊啊啊啊啊啊啊,我当场就哭了,哭的相当的惨呀,惨不忍睹呀,弄了老半天就这么给破了,不甘心呀。
我没有办法了,我之后弄邮箱验证了。以前没有写过邮箱这一块的程序,在网上看了下实现方法,当然我很担心,如果发邮件的话会不会被比如说腾讯邮箱拦截下来之类的呀,表示也很蛋疼,便在网上直接找到了个类,将这个邮箱类看懂之后直接拿来用了。有个域名,是freestu.net,并且这学期开学之后去弄了腾讯的企业邮箱,觉得相当爽,以自己的域名来做邮箱,好霸气高端上档次。看懂类之后直接拿来实例化用了,现在网站是集合IP,cookie,验证码,邮箱验证四大功能防刷票。
已经不会再爱了,在群里面我被骂惨了,越整越难投票了。不爱了。
我再讲讲每个方法的实现吧。
IP,用到的是一个函数:
getenv("REMOTE_ADDR")
cookie是用的函数:
setcookie("ip",$ip,$time);
setcookie("vote_id",$tb_vote_id,$time);//设置cookie,到时候可以判断VPN之后还是投这个队的话就投不起
cookie的检查:
$_COOKIE['vote_id']==$tb_vote_id
验证码是以前写的一个类,直接拿来用了,主要就是随机生成一个4位数,包括A-Z,a-z和0-9,验证的时候区分大小写,然后存在session里面。
发邮箱的类:
邮箱发送的内容也是随机一个10位的包括大写小写数字的验证码,发过去然后邮箱获得后可以直接复制,同时这个验证码存入cookie里面,这里存session也可以的,然后让用户输入验证码,判断这个邮箱的验证码与cookie或者session中的是否一样。
投票还没有结束,但是起码我看见了成效,没有再刷票了。yeah~~~~
转载请注明出处:http://www.cnblogs.com/yydcdut/p/3470105.html
关于PHP写的投票网站之刷票风云的更多相关文章
- 关于PHP写的投票网站之刷票终结版
告诉大家一个坏消息,还是有刷票的行为,有图有真相: 倒数第三项是时间轴,倒数第二项是IP,倒数第一项是邮箱,你们要刷票,拦都拦不住呀呀呀呀呀呀!!!!! 看看这些时间的间隔,看看这些IP的地址,哎,再 ...
- 利用django创建一个投票网站(五)
创建你的第一个 Django 项目, 第五部分 这一篇从第四部分(en)结尾的地方继续讲起.我们在前几章成功的构建了一个在线投票应用,在这一部分里我们将其创建一些自动化测试. 自动化测试简介 自动化测 ...
- 利用django创建一个投票网站(二)
创建你的第一个 Django 项目, 第二部分 这一篇从第一部分(zh)结尾的地方继续讲起.本节我们将继续写 Web 投票应用,并主要关注 Django 提供的自动生成的管理页面(admin site ...
- 利用django创建一个投票网站(一)
这是教程的原始链接:http://django-intro-zh.readthedocs.io/zh_CN/latest/part1/ 创建你的第一个 Django 项目, 第一部分 来跟着实际项目学 ...
- IIS写权限漏洞和XFF刷票原理
IIS写权限漏洞 PUT写入漏洞 此漏洞主要是因为服务器开启了webdav的组件导致的 1.扫描漏洞,yes,可以PUT: 2.用老兵的工具上传一句话文件test.txt,然后move改名为shell ...
- redis 实例2 构建文章投票网站后端
redis 实例2 构建文章投票网站后端 1.限制条件 一.如果网站获得200张支持票,那么这篇文章被设置成有趣的文章 二.如果网站发布的文章中有一定数量被认定为有趣的文章,那么这些文章需要被设置 ...
- 利用django创建一个投票网站(三)
创建你的第一个 Django 项目, 第三部分 这一篇从第二部分(zh)结尾的地方继续讲起.我们将继续编写投票应用,并且聚焦于如何创建公用界面--也被称为"视图". 设计哲学 Dj ...
- PHP教程-防止网站被刷票的小技巧
在Web开发中,投票模块会经常出现.这样就使得防止刷票,成了至关重要的技术.以下是兄弟连教育www.itxdl.cn总结的一些防止刷票方法: 1. IP限制 这是使用的最多,也是最广泛,不可少的刷票限 ...
- 利用django创建一个投票网站(四)
创建你的第一个 Django 项目, 第四部分 这一篇从第三部分(zh)结尾的地方继续讲起.我们将继续编写投票应用,专注于简单的表单处理并且精简我们的代码. 编写一个简单的表单 让我们更新一下在上一个 ...
随机推荐
- python创建有序字典OrderedDict()
python 有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections "& ...
- codevs 1365 浴火银河星际跳跃
1365 浴火银河星际跳跃 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小 K 又在玩浴火银河了...不过这次他的目的不是跑运输 ...
- BZOJ.3110.[ZJOI2013]K大数查询(整体二分 树状数组/线段树)
题目链接 BZOJ 洛谷 整体二分求的是第K小(利用树状数组).求第K大可以转为求第\(n-K+1\)小,但是这样好像得求一个\(n\). 注意到所有数的绝对值\(\leq N\),将所有数的大小关系 ...
- 异常:The server committed a protocol violation
异常记录: Exception rethrown at [0]: 在 Wintop.Windows.FrmLogin.btnLogin_Click(Object sender, EventArgs e ...
- opencv 利用Haar 人脸识别
#include <opencv2/opencv.hpp> #include <cstdio> #include <cstdlib> #include <io ...
- jmeter3.3—插件管理器的安装
一.介绍JMeter Plugins 一直以来, JMeter Plugins 为我们提供了很多高价值的JMeter插件,比如: 用于服务器性能监视的 PerfMon Metrics Collecto ...
- centos 6.5安装VMware tools
系统描述:win7旗舰版64位系统+VMware Workstation10+CentOS6.5(win7系统上安装了VMware Workstation10虚拟化软件,在该虚拟化软件上安装了Cent ...
- Git_使用GitHub
我们一直用GitHub作为免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的.其实GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人 ...
- IntelliJ IDEA 学习(五)类注释和自定义方法注释
intellj idea的强大之处就不多说了,相信每个用过它的人都会体会到,但是我们经常会感觉他很复杂,尤其刚从eclipse转过来的童鞋,相信刚开始的那段经历都是不堪回首的 如何实现 ...
- .Net高级技术——垃圾收集器
垃圾收集器概述 大排档和学校食堂.一个是别人帮你收拾盘子,一个是自己收拾盘子. 垃圾收集GC(Garbage Collection).内存的分配.回收不需要程序员操心,程序员只要需要的时候new就可以 ...