




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务九在线投票与网站计数功能实现需要学习的主要知识点:文件系统中常用的函数功能介绍使用文件操作完成在线投票功能使用session禁止反复投票使用cookie禁止在同一主机中的重复投票网站计数器功能的实现简单在线投票功能实现简单在线投票,是指任何用户打开投票页面以后,都可以不受任何限制的进行任意次数的投票页面布局结构与样式定义创建页面文件vote.php整个页面内容包含在一个大盒子中,使用class类选择符.wdiv定义,具体样式要求:宽度1080px,高度900px,填充0,上下边距0,左右边距auto;每幅图片以及图片下方的票数和百分比等信息都放在一个小盒子中,使用class类选择符ndiv定义,具体样式要求:宽度250px,高度300px,填充0,左边距20px,向左浮动,盒子中的文本内容在水平方向居中,文本字号12pt;页面布局结构与样式定义盒子ndiv内部下方有一行文本,使用段落标记控制,使用包含选择符.ndivp定义段落的上边距为5px,其它边距为0;盒子ndiv内部所有图片的边框都使用包含选择符.ndivimg{border:0;width:250px;height:250px;}设置,边框为0是因为在页面中所有图片都要做成供用户点击投票的超链接形式,在大部分浏览器中,做成超链接热点的图片都会带上蓝色的边框,在页面效果中不太美观,将其设置为0即可解决该问题。总结:整个页面的布局就是在作为父元素的盒子wdiv中分三行向左浮动共排列了12个子元素ndiv。在线投票功能要求-1(1)素材中的图片文件命名方式必须是有规律的,这里提供素材的主文件名都是“img+数字序号”的方式,数字序号从0开始,而扩展名则可以是.jpg或者.gif,页面中的图片元素都要以超链接的形式存在,超链接指向的文件都是vote.php自身。(2)每幅图下面都要显示相应的得票数信息,另外还添加了该票数在总票数中的百分比。在线投票功能要求-2(3)为了能够保存每幅图的得票数,做到即便是服务器突然出现故障,再度运行之后,也不会将原有票数全部清0,必须要使用文本文件记录每幅图的票数,而不能使用简单的变量或者数组的形式来保存,简单的变量或数组存在的问题是,一旦页面重新运行,保存的数据都会不复存在,因为变量与数组的生存周期就是程序的一次运行时间;但是同样也没有必要选用数据库方式来保存,这样会使问题变得过于复杂。文本文件名称vote.txt,每行内容为一幅图的票数,顺序与图片顺序一致在线投票功能要求-3文本文件vote.txt可以由参与投票的第一个用户在运行页面文件时创建,因此在文件代码开始必须要判断文本文件vote.txt是否存在,不存在则采用fopen()函数以只写方式打开来创建,创建完毕立即关闭。每个用户在打开页面vote.php时,都要以读模式打开vote.txt,使用循环结构将读取的结果保存在数组$count中在线投票功能要求-4(4)设计循环结构计算每幅图票数的百分比,输出内部的div判断当前图片对应的扩展名类型,并根据图片类型输出超链接图片,同时使用键名vote向超链接页面文件vote.php提交这幅图对应的序号值。输出段落中的票数和百分比,结束内部div(5)在循环输出页面元素之前,判断是否存在,存在则获取被投票的图片的序号,将数组$count中对应的元素值以及$sum数据都加1;以写方式打开vote.txt,将最新票数逐行写入。运行并观察效果运行vote.php文件,任意点击任意图片观察投票效果思考问题:要如何限制用户只能投票一次?使用session禁止反复投票功能实现过程在页面代码开始处使用session_start()函数启用session;当用户点击超链接投票、系统获取到投票的信息之后,设置系统数组元素$_SESSION['voted']=1;用于表示用户已经投过票当用户试图再次点击超链接或者以刷新页面的方式继续投票时,将通过isset($_SESSION['voted'])判断数组元素是否存在,若是已经存在,则输出脚本代码提示用户已经投票不可再投,然后直接结束页面文件的执行增加与修改的代码将原来的vote.php文件另存为voteSession.php(1)在代码开始的<?php定界符后面增加如下代码:(2)在代码if($vote!=''){$count[$vote]++;$sum++;}的花括号中增加代码$_SESSION['voted']=1,生成系统数组元素。函数exit()是结束文件voteSession.php运行过程的方法,一旦结束就不可以再通过刷新方法重新运行继续修改页面文件除了上述要修改的内容之外,所有图片超链接要运行的文件都要改为voteSession.php请大家尝试:运行页面文件voteSession.php,进行一次投票之后,在当前页面继续刷新或者再次点击超链接还能否继续投票?关闭当前浏览器,重新打开之后再次运行,是否可以继续投票?使用session禁止重复投票的页面中存在的问题如下:使用session时,在关闭浏览器后session会自动失效,session在失效之后,创建的数组元素$_SESSION['voted']就不复存在,因此只要用户重新打开浏览器窗口再次运行就可以继续投票。要解决该问题,需要使用cookie使用cookie禁止重复投票修改文件将原来的vote.php文件另存为voteCookie.php(1)在代码开始的<?php后面增加如下代码:修改文件(2)在代码if($vote!=''){$count[$vote]++;$sum++;}的花括号中增加如下代码:$tm=3600*120; setcookie("voted",$sessionID,time()+$tm);上面代码生成系统名称是voted的cookie,并且设置cookie的过期时间是5天。说明,cookie的创建必须是在用户的一次投票完成之后,这样才能在下次想投票时用来做判断条件。网站计数器功能实现创建页面wzjsq.php,在其中统计并输出本页面的访问总量和当日访问量,效果如图所示功能说明使用文本文件counter.txt保存需要的信息,包括三个,分别是:总访问量、今日访问量和用户访问网站时的日期。保存日期的目的是读取出来之后,与系统的当前日期进行比较,若是相同,说明当前的用户与上一个用户是在同一天访问网站的,所以要将今日访问量加1,否则说明当前的用户与上一个用户不是在同一天访问网站的,即当前用户是今天的第一个访客,需要将今日访问量设置为1。功能代码
判断文件counter.txt若是不存在,则以写方式打开来创建,创建完成后要关闭;
以读方式打开文件counter.txt,使用fgets()函数从其中读出三行数据,对于访问量这样的数字型的数据,读出之后直接采用加0方式将其从文本数字转换为数值数字,对于读出的日期数据不做任何修改;
使用访问总量$sum作为判断条件,判断其取值若是空,则说明文件是刚刚创建出来,将表示访问总量的$sum变量和表示今日访问量的$todaycnt变量的值设置为0,将日期$riqi也设置为0即可;功能代码任何时候来的访客,都要使得变量$sum加1;针对当前访客,将其访问网站页面时的日期获取出来,保存在变量$today中;判断$today中的当前日期和$ri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人与交通安全
- 《诫子书》课件教学课件
- 公司节前安全教育培训课件
- 亲子共读课件设计意图
- 血透室护理质量总结分析
- 亭子乐高搭建课件
- 护理管理工作总结
- 事故应急救援安全培训课件
- 《蒹葭》课件内容
- 公司级安全培训内容课件
- 2025年四川基层法律服务工作者执业核准考试仿真试题及答案一
- 中学知识竞赛试题及答案
- 2025-2026学年人教版(2024)初中物理八年级上册教学计划及进度表
- 医院环境感染监测制度
- 医院一键式报警系统建设与实施
- 机关办公楼网络设备升级改造方案
- 心房颤动护理查房
- 部编版新教材道德与法治二年级上册《5. 这是我们班》教案
- 法律律师委托协议书模板
- 2024年安徽省泾县人民医院公开招聘护理工作人员试题带答案详解
- 2025年小学英语教材培训心得体会范文
评论
0/150
提交评论