- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
PHP动态网站开发项目教程;任务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动态网站开发项目教程课件 任务4 会员管理系统用户登录、资料修改及注销.pptx
- PHP动态网站开发项目教程课件 任务5 会员管理系统管理员功能.pptx
- PHP动态网站开发项目教程课件 任务6 会员管理系统项目优化.pptx
- PHP动态网站开发项目教程课件 任务7 项目开发前的准备工作.pptx
- PHP动态网站开发项目教程课件 任务8 在线投票系统首页制作及投票功能实现.pptx
- PHP动态网站开发项目教程课件 任务9 在线投票系统投票功能实现.pptx
- PHP动态网站开发项目教程课件 任务11 在线投票系统管理员功能.pptx
- PHP动态网站开发项目教程课件 任务12 面向对象的程序设计和PDO的使用.pptx
- PHP动态网站开发项目教程课件 任务13 Laravel中的视图、路由、控制器、验证码.pptx
- PHP动态网站开发项目教程课件 任务14 Laravel中的表单验证、数据库操作.pptx
文档评论(0)