最近学校导航站找我让我给他们做一个投票系统的网站,我一口答应了,他们只是要求不准刷票情况出现,我也一口答应了。。我答应的太干脆了。

  然后我便开始做这个网站,网站做出来没花太多时间,并且我是用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里面。

  发邮箱的类:

class.phpmailer.php

  邮箱发送的内容也是随机一个10位的包括大写小写数字的验证码,发过去然后邮箱获得后可以直接复制,同时这个验证码存入cookie里面,这里存session也可以的,然后让用户输入验证码,判断这个邮箱的验证码与cookie或者session中的是否一样。

  投票还没有结束,但是起码我看见了成效,没有再刷票了。yeah~~~~

转载请注明出处:http://www.cnblogs.com/yydcdut/p/3470105.html

关于PHP写的投票网站之刷票风云的更多相关文章

  1. 关于PHP写的投票网站之刷票终结版

    告诉大家一个坏消息,还是有刷票的行为,有图有真相: 倒数第三项是时间轴,倒数第二项是IP,倒数第一项是邮箱,你们要刷票,拦都拦不住呀呀呀呀呀呀!!!!! 看看这些时间的间隔,看看这些IP的地址,哎,再 ...

  2. 利用django创建一个投票网站(五)

    创建你的第一个 Django 项目, 第五部分 这一篇从第四部分(en)结尾的地方继续讲起.我们在前几章成功的构建了一个在线投票应用,在这一部分里我们将其创建一些自动化测试. 自动化测试简介 自动化测 ...

  3. 利用django创建一个投票网站(二)

    创建你的第一个 Django 项目, 第二部分 这一篇从第一部分(zh)结尾的地方继续讲起.本节我们将继续写 Web 投票应用,并主要关注 Django 提供的自动生成的管理页面(admin site ...

  4. 利用django创建一个投票网站(一)

    这是教程的原始链接:http://django-intro-zh.readthedocs.io/zh_CN/latest/part1/ 创建你的第一个 Django 项目, 第一部分 来跟着实际项目学 ...

  5. IIS写权限漏洞和XFF刷票原理

    IIS写权限漏洞 PUT写入漏洞 此漏洞主要是因为服务器开启了webdav的组件导致的 1.扫描漏洞,yes,可以PUT: 2.用老兵的工具上传一句话文件test.txt,然后move改名为shell ...

  6. redis 实例2 构建文章投票网站后端

    redis 实例2 构建文章投票网站后端   1.限制条件 一.如果网站获得200张支持票,那么这篇文章被设置成有趣的文章 二.如果网站发布的文章中有一定数量被认定为有趣的文章,那么这些文章需要被设置 ...

  7. 利用django创建一个投票网站(三)

    创建你的第一个 Django 项目, 第三部分 这一篇从第二部分(zh)结尾的地方继续讲起.我们将继续编写投票应用,并且聚焦于如何创建公用界面--也被称为"视图". 设计哲学 Dj ...

  8. PHP教程-防止网站被刷票的小技巧

    在Web开发中,投票模块会经常出现.这样就使得防止刷票,成了至关重要的技术.以下是兄弟连教育www.itxdl.cn总结的一些防止刷票方法: 1. IP限制 这是使用的最多,也是最广泛,不可少的刷票限 ...

  9. 利用django创建一个投票网站(四)

    创建你的第一个 Django 项目, 第四部分 这一篇从第三部分(zh)结尾的地方继续讲起.我们将继续编写投票应用,专注于简单的表单处理并且精简我们的代码. 编写一个简单的表单 让我们更新一下在上一个 ...

随机推荐

  1. 模型构建<1>:模型评估-分类问题

    对模型的评估是指对模型泛化能力的评估,主要通过具体的性能度量指标来完成.在对比不同模型的能力时,使用不同的性能度量指标可能会导致不同的评判结果,因此也就意味着,模型的好坏只是相对的,什么样的模型是较好 ...

  2. Hdu4903 The only survival

    The only survival Time Limit: 40000/20000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Ot ...

  3. Kibana安装及使用说明

    Kibana安装及使用说明 Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索.查看交互存储在Elasticsearch索引中的数据. 官方地址:https://www. ...

  4. Codeforces Round #352 (Div. 1) A. Recycling Bottles 暴力

    A. Recycling Bottles 题目连接: http://www.codeforces.com/contest/671/problem/A Description It was recycl ...

  5. Codeforces Round #352 (Div. 2) A. Summer Camp 水题

    A. Summer Camp 题目连接: http://www.codeforces.com/contest/672/problem/A Description Every year, hundred ...

  6. zoj 3629 Treasure Hunt IV 打表找规律

    H - Treasure Hunt IV Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu ...

  7. 和程序有关的一个游戏<<mu complex>> 攻略

    最速打法: 1 - login, brucedayton 2 - login, allomoto 3 - login, m3g4pa55word 4 - unlock, 03/18/34 5 - ss ...

  8. 运用Android ROM Manager应用安装ClockworkMod Recovery的详细教程

    在安装ClockworkMod Recovery恢复模式之前,建议先认识下Google Android平台的ClockworkMod Recovery恢复模式 对于Android ROM Manage ...

  9. SQLite 客户端管理工具

    SQLite 客户端管理工具 SQLite Expert Personal 3.5.79.2499 下载地址:http://www.onlinedown.net/soft/117987.htm SQL ...

  10. ob_start()、ob_end_flush和ob_end_clean()多级缓冲

    ob_start() 和 ob_end_flush() 是一对很好的搭档,可以实现对输出的控制.当成一对出现理解起来就没什么问题,但是当他们两个各自出现次数增加时,就比较难理解了. <?php ...