书签 分享 收藏 举报 版权申诉 / 44
上传文档赚钱

类型PHP网站开发项目式教程任务9课件.pptx

  • 上传人(卖家):三亚风情
  • 文档编号:3372980
  • 上传时间:2022-08-24
  • 格式:PPTX
  • 页数:44
  • 大小:1.34MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《PHP网站开发项目式教程任务9课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    PHP 网站 开发 项目 教程 任务 课件
    资源描述:

    1、任务九 在线投票与网站计数功能实现n需要学习的主要知识点:n文件系统中常用的函数功能介绍n使用文件操作完成在线投票功能n使用session禁止反复投票n使用cookie禁止在同一主机中的重复投票n网站计数器功能的实现任务说明n在各类网站上经常会出现各种在线投票页面,例如评选我最喜爱的老师、十大杰出青年、我最喜爱的美食、我最喜爱的小明星等等。还有很多网站中都对访客人数进行统计,例如统计访问总量、本月访问量、本周访问量和今日访问量等。n要完成上述功能,需要将每个票数或者访问量等数据都保存在服务器端的文本文件中,这需要使用PHP提供的各种文件访问操作函数。打开文件fopen()函数nfopen()函

    2、数的格式:nfopen(filename,mode,include_path,context);n函数fopen()的作用n打开参数filename指定的文件,若是文件存在并且被打开,则返回一个句柄,否则返回false。fopen()函数参数说明nfilename:必选参数,用于提供要打开文件的路径和名称。nmode:必选参数,用于指定打开文件时的读或写方式,系统为该参数设置了多种不同的取值,这里只介绍常用的四种。n(1)r:以只读方式打开,将文件指针指向文件头;n(2)r+:以读写方式打开,将文件指针指向文件头;n(3)w:以只写方式打开,文件指针指向文件头,打开同时清除文件所有内容,如果文

    3、件不存在,则尝试建立文件;n(4)a:以追加写方式打开,文件指针指向文件末尾,若文件不存在,将尝试建立文件。n参数include_path和context都是可选参数,这里不介绍。fopen()函数应用示例n创建文件file.php,使用代码$fp=fopen(file.txt,r)尝试打开文本文件file.txt,若是打开成功,则输出“成功打开文件file.txt”,否则输出“无法打开文件file.txt”n注意:文件file.txt是不存在的n运行观察效果之后,将$fp=fopen(file.txt,r)改为$fp=fopen(file.txt,w)之后,再次运行页面观察效果关闭文件fcl

    4、ose()函数n打开的文件读或写操作都完成之后,必须要关闭文件,释放内存,使用fclose()函数完成。n格式:fclose(int$handle)n参数$handle表示之前打开文件时返回的句柄。n例如,代码fclose($fp)的作用是关闭句柄$fp所指向的文件。判断文件是否存在file_exists()函数n在打开或使用某个文件之前,通常要判断该文件是否存在,这样才能确定是使用读方式直接打开一个已经存在的文件,还是以写方式创建并打开一个不存在的文件。n判断文件是否存在,使用函数file_exists()。n格式为:file_exists(path)n参数path是必需的,指定要检查判断的

    5、路径。n该函数的返回值是布尔值,若指定的文件存在,则返回TRUE,否则返回FALSE。file_exists()函数应用小示例n修改文件file.php,判断文件file.txt是否存在,若是不存在,则使用w方式在打开时创建该文件,创建完成后立即关闭文件,重新使用r方式打开文件n第一次运行:前提条件是file.txt不存在,在运行结束后创建该文件,在文件夹中打开该文件,适当添加内容“这是文件的内容”,保存关闭文件n第二次运行,运行之后重新打开文件,观察文件内容是否发生变化,以确定是否又重新创建了文件fgets()函数n函数fgets()可以从指定的文件中读取当前文件指针所指的一行(一个段落)内

    6、容,读取结束的标志是遇到rn回车换行字符n格式:string fgets(int$handle,int$length)n参数:n$handle:必需的,表示已经打开的文件句柄;n$length:可选的,指定了返回的最大字节数(是指当前段落中),最多可以返回的是$length-1个字节的字符串,若是没有指定该参数,默认为1024个字节。若$length超出了段落中字节个数,则读取实际段落内容fgets()函数应用示例n在file.txt文件中添加图示内容形式(每行10个字母),修改file.php文件,在以读方式打开file.txt文件之后,依次使用fgets($fp)、fgets($fp,4)

    7、和fgets($fp)将获取的内容分别使用变量$str1、$str2、$str3保存,换行输出三个变量的内容,观察效果并思考原因n使用fgets($fp,11)、fgets($fp)和fgets($fp)替换上面的fgets()函数,重新运行观察效果并思考原因。若是将11换做12呢,再换做13呢?feof()函数n在读取文件内容时,经常要判断文件指针是否已经到达文件末尾,若是已经到达末尾,读取过程必须要结束,使用函数feof()判断文件指针是否到达文件末尾。n格式:feof(int$handle)n参数$handle表示之前打开文件时返回的句柄。文件操作小实例n假设存在文本文件a.txt,里面

    8、有三行任意的内容,创建页面文件read.php,打开文件a.txt,使用循环结构逐行读出其中的内容并输出。n代码如图所示:思考问题:第6行代码是否可以使用代码echo nl2br($line)取代?写入文件fwrite()函数n文件打开之后,要向文件中写入内容,通常会选用fwrite()方法。n格式:fwrite($handle,$string,$length)n参数:nhandle:必需的,表示之前打开的文件句柄;n$string:必需的,表示要向文件中写入的内容;n$length:可选的,若是指定该参数,则写入的内容是$string串中前$length个字节的数据;若是$length超出了

    9、$string的长度,则将变量$string的内容全部写进去。n注意:该函数写完内容之后,并不换行。fwrite()函数应用小示例n创建页面文件write.php,以写方式打开并创建文件b.txt,向其中写入两行内容分别是“这是第一行内容”和“这是第二行内容”。n代码如下:运行效果图示n问题思考:nb.txt中内容为什么没有换行?如何解决该问题?若是在写入串的后面增加标记是否起作用?因为fwrite()函数写完内容之后,不能自动换行,需要在写入内容的后面缀上能够在文本文件中起到回车作用的回车换行符rn,即,需要将第3行和第4行代码修改为:fwrite($fp,这是第一行内容rn);fwrite

    10、($fp,这是第二行内容rn);这里不能通过增加标记完成文件内容的换行,标记只能在浏览器环境下才能被解释执行,放在文本文件中只能显示为标记。追加写的应用n以追加写方式打开文件b.txt,添加内容“这是追加进来的内容”简单在线投票功能实现u对图示的在线投票页面的功能和布局结构进行说明简单在线投票功能说明u简单在线投票,是指任何用户登录到投票页面以后,都可以不受任何限制的进行任意次数的投票页面布局结构与样式定义u整个页面内容包含在一个大盒子中,使用class类选择符.wdiv定义,具体样式要求:宽度1080px,高度620px,填充0,上下边距0,左右边距auto;u每幅图片以及图片下方的票数、百

    11、分比、姓名等信息都放在一个小盒子中,使用class类选择符ndiv定义,具体样式要求:宽度160px,高度300px,填充0,上边距和右边距都是0,下边距10px,左边距20px,向左浮动,盒子中的文本内容在水平方向居中,文本字号12pt;页面布局结构与样式定义u盒子ndiv内部下方的文本有两行,使用两个段落标记控制,使用包含选择符.ndiv p定义段落的上边距为5px,其它边距为0;u盒子ndiv内部所有图片的边框都使用包含选择符.ndiv imgborder:0;设置为0,这是因为在页面中所有图片都要做成供用户点击来投票的超链接形式,在大部分浏览器中,做成超链接热点的图片都会带上蓝色的边框

    12、,在页面效果中不太美观,将其设置为0即可解决该问题。图片宽度和高度分别是160px和240px。u总结:整个页面的布局就是在作为父元素的盒子wdiv中分两行向左浮动共排列了12个子元素ndiv。样式代码如图u创建文件vote.php,在首部增加如下样式代码在线投票功能要求-1u(1)素材中的图片文件命名方式必须是有规律的,这里提供素材的主文件名都是“img+数字序号”的方式,数字序号从0开始,而扩展名则可以是.jpg或者.gif,页面中的图片元素都要以超链接的形式存在,超链接指向的文件都是vote.php自身。u(2)每幅图下面都要显示相应的得票数和姓名信息,另外还添加了该票数在总票数中的百分

    13、比。所有图片对应的姓名信息,需要使用一个数组来保存,保存时,姓名对应的下标必须与图片文件名中的序号是一致的。22在线投票功能要求-2u(3)为了能够保存每幅图的得票数,做到即便是服务器突然出现故障,再度运行之后,也不会将原有票数全部清0,必须要使用文本文件记录每幅图的票数,而不能使用简单的变量或者数组的形式来保存,简单的变量或数组存在的问题是,一旦页面重新运行,保存的数据都会不复存在,因为变量与数组的生存周期就是程序的一次运行时间;但是同样也没有必要选用数据库方式来保存,这样会使问题变得过于复杂。23在线投票功能要求-3u在文本文件中,一幅图的票数占用一行,顺序与图片文件名称中的序号也要保持一

    14、致,这样方便进行票数的获取和更新操作。这里使用的文本文件是vote.txt,文本文件可以不用事先创建,由参与投票的第一个用户在运行页面文件时创建,因此在文件代码开始必须要判断文本文件vote.txt是否存在,不存在则采用fopen()函数以只写方式打开来创建。u每个用户在打开页面时,程序都要将当前每幅图的票数投票从vote.txt文件中读取出来,在完成投票之后,再将最新结果重新写入vote.txt中。24在线投票功能要求-4u(4)对于每幅图及其下面的票数和名字信息,都是通过for循环语句来输出的(循环变量取值从0到11),这种设计方法,在图片随意增多或者减少时,可以方便地进行控制,而不需调整

    15、页面的内容。u例如,若是for循环变量的取值是5,则输出的图片只能是img5.jpg或者是img5.gif,到底是两者中的哪一个,要通过file_exists()函数判断文件是否存在之后来确定。同时控制输出存放姓名的数组元素的值,以及从文本文件vote.txt中读出的相应票数。u(5)点击每一幅图,都要向链接的页面文件vote.php提交这幅图对应的序号值,保证完成对这幅图的投票,同时可在页面中看到变化后的票数。25修改vote.php文件运行并观察效果n运行vote.php文件,任意点击任意图片观察投票效果n思考问题:n要如何限制用户只能投票一次?使用session禁止反复投票u功能实现过程

    16、n在页面代码开始处使用session_start()函数启用session;n当用户点击超链接投票、系统获取到投票的信息之后,设置系统数组元素$_SESSIONvoted=1;用于表示用户已经投过票n当用户试图再次点击超链接或者以刷新页面的方式继续投票时,将通过isset($_SESSIONvoted)判断数组元素是否存在,若是已经存在,则输出脚本代码提示用户已经投票不可再投,然后直接结束页面文件的执行增加与修改的代码u将原来的vote.php文件另存为voteSession.phpu(1)在代码开始的?php定界符后面增加如下代码:u(2)在代码if($vote!=)$count$vote+

    17、;$sum+;的花括号中增加代码$_SESSIONvoted=1,生成系统数组元素。函数exit()是结束文件voteSession.php运行过程的方法,一旦结束就不可以再通过刷新方法重新运行继续修改页面文件u除了上述要修改的内容之外,所有图片超链接要运行的文件都要改为voteSession.php用户重复投票时的运行效果请大家尝试:u运行页面文件voteSession.php,进行一次投票之后,在当前页面继续刷新或者再次点击超链接还能否继续投票?u关闭当前浏览器,重新打开之后再次运行,是否可以继续投票?u使用session禁止重复投票的页面中存在的问题如下:n使用session时,在关闭浏

    18、览器后session会自动失效,session在失效之后,创建的数组元素$_SESSIONvoted就不复存在,因此只要用户重新打开浏览器窗口再次运行就可以继续投票。n要解决该问题,需要使用cookie关于cookieucookie是用户浏览网站时,由服务器写入用户主机硬盘中的一个文本文件,其中保存了用户访问网站时的一些私有信息。当用户下一次再访问该网站时,网站的PHP文件就可以读取这些信息,用于进行各种判断。简而言之,cookie是一种在本地浏览器端储存数据并以此来跟踪和识别用户的机制。创建cookieu在PHP中创建cookie时需要使用setcookie()函数,语法格式如下:nsetc

    19、ookie(name,value,expire,path,domain,secure)u参数:n(1)name:必选的,设置cookie的名称。n(2)value:必选的,设置cookie的值。n(3)expire:可选的,设置cookie的有效期,这是一个UNIX时间戳,即从UNIX纪元开始的秒数。对于expire参数的设置一般通过当前时间戳time()加上相应的秒数来决定,例如time()+1200表示cookie将在20分钟之后失效,若是不设置expire参数,则cookie将在浏览器关闭时立即失效。创建cookie简单应用举例u例如nsetcookie(name,zhangmanli,

    20、time()+3600)n作用是创建一个名称为name、取值为zhangmanli的cookie,该cookie的存活期是1个小时。访问cookieu通过setcookie()函数创建的cookie作为数组元素,存放在系统数组$_COOKIE中,因此我们可以直接通过数组元素来访问已经创建的cookie。例如,对于上面创建的cookie,若是使用代码echo$_COOKIEname;,将输出zhangmanli。u上述说法同时说明,我们可以用$_COOKIEname=zhangmanli方式创建一个cookie,但是这种cookie在会话结束时会消失。删除cookieu使用setcookie()

    21、函数创建cookie时通常都会指定一个过期时间,如果到了过期时间,cookie将会被自动删除,若是在过期之前想要删除cookie,则可以使用setcookie()函数重新创建cookie,将其过期时间设置为过去的时间,例如代码setcookie(name,zhangmanli,time()-600)即可将名称是name的cookie删除掉。使用cookie禁止重复投票u修改文件n将原来的vote.php文件另存为voteCookie.phpn(1)在代码开始的?php后面增加如下代码:修改文件u(2)在代码if($vote!=)$count$vote+;$sum+;的花括号中增加如下代码:n$

    22、tm=3600*120;nsetcookie(voted,$sessionID,time()+$tm);u上面代码生成系统名称是voted的cookie,并且设置cookie的过期时间是5天。u说明,本页面中cookie的创建必须是在用户的一次投票完成之后,这样才能在下次想投票时用来做判断条件。网站计数器功能实现u创建页面wzjsq.php,在其中统计并输出本页面的访问总量和当日访问量,效果如图所示功能说明u使用文本文件counter.txt保存需要的信息,包括三个,分别是:总访问量、今日访问量和用户访问网站时的日期。u保存日期的目的是读取出来之后,与系统的当前日期进行比较,若是相同,说明当前

    23、的用户与上一个用户是在同一天访问网站的,所以要将今日访问量加1,否则说明当前的用户与上一个用户不是在同一天访问网站的,即当前用户是今天的第一个访客,需要将今日访问量设置为1。功能代码u 判断文件counter.txt若是不存在,则以写方式打开来创建,创建完成后要关闭;u 以读方式打开文件counter.txt,使用fgets()函数从其中读出三行数据,对于访问量这样的数字型的数据,读出之后直接采用加0方式将其从文本数字转换为数值数字,对于读出的日期数据不做任何修改;u 使用访问总量$sum作为判断条件,判断其取值若是空,则说明文件是刚刚创建出来,将表示访问总量的$sum变量和表示今日访问量的$todaycnt变量的值设置为0,将日期$riqi也设置为0即可;功能代码u任何时候来的访客,都要使得变量$sum加1;u针对当前访客,将其访问网站页面时的日期获取出来,保存在变量$today中;u判断$today中的当前日期和$riqi变量中的日期是否是一致的,若是一致,说明上个访客和当前访客是在同一天访问网站的,将今日访问量加1,否则说明当前访客是今天第一个访客,将今日访问量设置为1;u以写方式打开文件counter.txt,将访问总量、今日访问量和当前用户的访问日期信息写入文件中保存,前两个值写入之后分别增加实现回车换行功能的“rn”字符;u输出访问量

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:PHP网站开发项目式教程任务9课件.pptx
    链接地址:https://www.163wenku.com/p-3372980.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库