关于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)结尾的地方继续讲起.我们将继续编写投票应用,专注于简单的表单处理并且精简我们的代码. 编写一个简单的表单 让我们更新一下在上一个 ...
随机推荐
- 复习一下xml(c)
简单介绍 Using System.Xml; XMLDocument xml=new XmlDocument();xml.Load(path);//初始化一个实例 xml.Load(HttpConte ...
- 机器学习之路: python 回归树 DecisionTreeRegressor 预测波士顿房价
python3 学习api的使用 git: https://github.com/linyi0604/MachineLearning 代码: from sklearn.datasets import ...
- Linux驱动之IIC总线
<作用> 电子设备中有很多IIC设备之间需要进行相互通信,这样就产生了IIC总线,常用来实现设备之间的数据通信. <IIC总线结构> IIC总线只有两条线,一条是串行数据线 ...
- python中的super( test, self).__init__()
python中的super( test, self).__init__() 对继承自父类的属性进行初始化 首先找到test的父类(比如是类A),然后把类test的对象self转换为类A的对象,然后“被 ...
- mysql长连接
长连接是干嘛的: 它是做连接复用的: 在openresty中的lua-resty-mysql 里 connect方法去连接mysql时会去ngx_lua cosocket连接池中寻找是否有可用连接 ...
- UIAutomator2.0初始
1. 先直接上样例,谷歌官方Demo: https://github.com/googlesamples/android-testing 2. 一句话说明改动思路 Most importantly, ...
- ubuntu 自动获取ip
$sudo dhclient -r $sudo dhclient $sudo dhclient eth0
- phpcms功能列表
上1 站点首页 就是前台首页 会员中心 跳到会员中心页面 搜索 新闻,图片等文档搜索 锁屏 锁住账号 Phpcms 官网 授权 官网查询 支持论坛 官网论坛 帮助 官网帮助 上2 我的面板 个人信息 ...
- HDU 4597 Play Game (DP,记忆化搜索)
Play Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total S ...
- js单例模式详解实例
这篇文章主要介绍了什么是单例单例模式.使用场景,提供了3个示例给大家参考 什么是单例? 单例要求一个类有且只有一个实例,提供一个全局的访问点.因此它要绕过常规的控制器,使其只能有一个实例,供使用者使用 ...