- 1、本文档共89页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
牟奇春主编;任务10在线投票系统投票限制
子任务10.1一人一天只能给一辆车投5票
10.1.1了解投票限制的常见手段?
(1)IP地址限制。这是网上投票最常见的防刷票手段,可限制每个IP地址在一定时间内只能投票一次。因为IP地址很难伪造,因此可靠性较高,建议开启。需要注意的是,如果在同一个局域网下(如用同一个路由器的WiFi),则可能存在不同终端IP地址相同的情况。如果使用的是手机运营商网络,则一般不会有此情况。
;(2)设备限制。投票平台使用Cookie等技术标记已投过票的设备(计算机、手机等),但从技术上来说,Cookie很容易丢失和被删除(如清空浏览器缓存、清空微信缓存、重启微信等),因此该方法并不可靠,但仍建议开启,作为额外的一道屏障。
(3)图形验证码。验证码要求投票者输入或回答一些机器较难识别的图形或问题,可有效防止作弊者利用计算机程序模拟自动投票。
;(4)投票时间限制。比如,同一个用户,限制在多少时间内,只能投一票。
(5)投票对象限制。比如,同一个用户,只能给指定个数的投票对象投票。
(6)其他限制。比如限制地理位置、要求用户使用短信验证码等。
;10.1.2设置一人一天只能给一辆车投5票?
小王同学在设计数据库时,专门设计了一张表,用于记录投票详情。现在要实现投票限制,就需要查询这张数据表,了解过往的投票情况,从而判断当前这次投票是否满足可投票条件。具体查询的是投票时间为当天,且用户ID(userID)等于当前登录者的ID,车辆ID(carID)等于当前被投票车辆ID的所有记录。如果此记录数小于5,则可以投票,否则不能投票。
程序思路理清楚了,完成代码就简单了,小王同学迅速完成了投票限制的代码。;【知识储备】
1.PHP中的日期函数
PHP中的date()函数可把时间戳格式化为可读性更好的日期或时间。其语法规则及参数如下所示。
stringdate(string$format[,int$timestamp])
2.使用聚合函数count()实现投票判断;参数;常用的MySQL聚合函数有以下几个。
(1)AVG()。
(2)SUM()。
(3)MAX()。
(4)MIN()。
(5)COUNT()。;其中AVG()和SUM()函数可以用于数值型字段,用于计算一组数据的“平均值”和“和”。
MIN()和MAX()函数可以用于任意数据类型的数据,作用是取其最小值和最大值。;COUNT()函数可以返回表中的记录总数,适用于任意数据类型的数据。在具体使用时,可以有3种写法,分别是COUNT(列)、COUNT(*)、COUNT(1)。这3种不同的写法在不同的数据库存储引擎下,效率会不一样。如果使用的是MyISAM存储引擎,则三者的效率相同,都是O?(1)。如果使用的是InnoDB存储引擎,则三者的效率:COUNT(*)=COUNT(1)(只能说约等于)COUNT(字段)(如果字段都非空,那么几乎和前两者没有什么区别)。;GROUPBY根据BY指定的列对数据进行分组,所谓分组,就是将一个“数据集”划分成若干“小区域”,然后针对若干“小区域”进行数据处理。需要强调的是,应该在对行进行分组之前应用WHERE子句,而在对行进行分组之后应用HAVING子句。换句话说,WHERE子句应用于行,HAVING子句应用于分组。
要对组进行排序,请在GROUPBY子句后添加ORDERBY子句。
GROUPBY子句中出现的列称为分组列。如果分组列包含NULL值,则所有NULL值都会被汇总到一个分组中,因为GROUPBY子句认为NULL值相等。;子任务10.2一人一天只能给3辆车投票
10.2.1分析一人一天只能给3辆车投票的逻辑?
一人一天只能给3辆车投票的查询逻辑为:在查询时,首先排除当前车辆,然后查询是否还给其他车辆投过票;如果查出的结果是还为其他3辆车投过票,加上当前车辆,就有4辆车了,超过了限制的数量3;如果不排除当前投票车辆,就会有bug;如果当前车辆在已投过票的车辆以外,就不能再投票了;如果当前车辆在已投过票的车辆中,就还可以继续投票(当然,还要看其他条件是否满足)。;10.2.2理解GROUPBY语句?
SQL语句中的GROUPBY相当于Excel中的分类汇总。GROUPBY语句根据一列或多列对结果集进行分组。在分组列上可以使用COUNT()、SUM()、AVG()等函数。最常见的例子是学生的成绩表,里面有很多行记录,列包括姓名、科目、分数。如果要统计每个人各科的总分,就需要用到GROUPBY语句。只需要在GROUPBY后面跟上姓名这一列,即可按照姓
您可能关注的文档
- PHP动态网站开发项目教程(微课版) 课件 任务7--9 项目开发前的准备工作、 在线投票系统首页制作及投票功能实现、 在线投票系统投票功能实现.pptx
- PHP动态网站开发项目教程(微课版) 课件 任务1、2 会员管理系统、 项目前端开发.pptx
- PHP动态网站开发项目教程(微课版) 课件 任务5、6 会员管理系统管理员功能、 会员管理系统项目优化.pptx
- PHP动态网站开发项目教程(微课版) 课件 任务12--14 面向对象的程序设计和PDO的使用; Laravel中的视图、路由、控制器、验证码; Laravel中的表单验证、数据库操作.pptx
- PHP动态网站开发项目教程(微课版) 课件 项目3、4 会员管理系统用户注册; 会员管理系统用户登录、资料修改及注销.pptx
- 《直播电商》课程标准.docx
- 《直播电商》课程考核计划表.doc
- 《直播电商》授课计划.doc
- 直播电商 参考答案 (何兴旺).docx
- 直播电商 教案-教学单元设计 项目八 综合运营管理.doc
- 001.社会工作的内涵、原则与领域.pdf
- 2011年917公务员联考《申论》卷及参考答案(福建、河南、重庆、甘肃、新疆)(2).pdf
- 2024年新疆和田地区企业人力资源管理师之一级人力资源管理师考试内部题库(A卷).docx
- 2024年开展扫黑除恶工作情况汇报范文四篇.pdf
- 2024年悼念爷爷的悼词(10篇) .pdf
- 2024年度优秀大学生志愿服务西部计划题库(含答案) .pdf
- 2012年河北公务员考试《申论》真题及参考答案.pdf
- 【花生十三】24下半年资料分析第7章PPT.pdf
- 2015年新疆公务员考试《申论》卷及参考答案.pdf
- 001.优抚安置社会工作概述、主要内容.pdf
文档评论(0)