教学课件任务9-访问文件的各种函数.pptx
教材配套资源页完整PPT课件教学课件任务9-访问文件的各种函数1任务九 在线投票与网站计数功能实现n需要学习的主要知识点:n文件系统中常用的函数功能介绍n使用文件操作完成在线投票功能n使用session禁止反复投票n使用cookie禁止在同一主机中的重复投票n网站计数器功能的实现2任务说明n在各类网站上经常会出现各种在线投票页面,例如评选我最喜爱的老师、十大杰出青年、我最喜爱的美食、我最喜爱的小明星等等。还有很多网站中都对访客人数进行统计,例如统计访问总量、本月访问量、本周访问量和今日访问量等。n要完成上述功能,需要将每个票数或者访问量等数据都保存在服务器端的文本文件中,这需要使用PHP提供的各种文件访问操作函数。3打开文件fopen()函数nfopen()函数的格式:nfopen(filename,mode,include_path,context);n函数fopen()的作用n打开参数filename指定的文件,若是文件存在并且被打开,则返回一个句柄,否则返回false。4fopen()函数参数说明nfilename:必选参数,用于提供要打开文件的路径和名称。nmode:必选参数,用于指定打开文件时的读或写方式,系统为该参数设置了多种不同的取值,这里只介绍常用的四种。n(1)r:以只读方式打开,将文件指针指向文件头;n(2)r+:以读写方式打开,将文件指针指向文件头;n(3)w:以只写方式打开,文件指针指向文件头,打开同时清除文件所有内容,如果文件不存在,则尝试建立文件;n(4)a:以追加写方式打开,文件指针指向文件末尾,若文件不存在,将尝试建立文件。n参数include_path和context都是可选参数,这里不介绍。5fopen()函数应用示例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)之后,再次运行页面观察效果6关闭文件fclose()函数n打开的文件读或写操作都完成之后,必须要关闭文件,释放内存,使用fclose()函数完成。n格式:fclose(int $handle)n参数$handle表示之前打开文件时返回的句柄。n例如,代码fclose($fp)的作用是关闭句柄$fp所指向的文件。7判断文件是否存在file_exists()函数n在打开或使用某个文件之前,通常要判断该文件是否存在,这样才能确定是使用读方式直接打开一个已经存在的文件,还是以写方式创建并打开一个不存在的文件。n判断文件是否存在,使用函数file_exists()。n格式为:file_exists(path)n参数path是必需的,指定要检查判断的路径。n该函数的返回值是布尔值,若指定的文件存在,则返回TRUE,否则返回FALSE。8file_exists()函数应用小示例n修改文件file.php,判断文件file.txt是否存在,若是不存在,则使用w方式在打开时创建该文件,创建完成后立即关闭文件,重新使用r方式打开文件n第一次运行:前提条件是file.txt不存在,在运行结束后创建该文件,在文件夹中打开该文件,适当添加内容“这是文件的内容”,保存关闭文件n第二次运行,运行之后重新打开文件,观察文件内容是否发生变化,以确定是否又重新创建了文件9fgets()函数n函数fgets()可以从指定的文件中读取当前文件指针所指的一行(一个段落)内容,读取结束的标志是遇到rn回车换行字符n格式:string fgets(int $handle, int $length)n参数:n$handle:必需的,表示已经打开的文件句柄;n$length:可选的,指定了返回的最大字节数(是指当前段落中),最多可以返回的是$length-1个字节的字符串,若是没有指定该参数,默认为1024个字节。若$length超出了段落中字节个数,则读取实际段落内容10fgets()函数应用示例n在file.txt文件中添加图示内容形式(每行10个字母),修改file.php文件,在以读方式打开file.txt文件之后,依次使用fgets($fp)、fgets($fp,4)和fgets($fp)将获取的内容分别使用变量$str1、$str2、$str3保存,换行输出三个变量的内容,观察效果并思考原因n使用fgets($fp,11)、fgets($fp)和fgets($fp)替换上面的fgets()函数,重新运行观察效果并思考原因。若是将11换做12呢,再换做13呢?11feof()函数n在读取文件内容时,经常要判断文件指针是否已经到达文件末尾,若是已经到达末尾,读取过程必须要结束,使用函数feof()判断文件指针是否到达文件末尾。n格式:feof(int $handle)n参数$handle表示之前打开文件时返回的句柄。12文件操作小实例n假设存在文本文件a.txt,里面有三行任意的内容,创建页面文件read.php,打开文件a.txt,使用循环结构逐行读出其中的内容并输出。n代码如图所示:思考问题:第6行代码是否可以使用代码echo nl2br($line)取代?13写入文件fwrite()函数n文件打开之后,要向文件中写入内容,通常会选用fwrite()方法。n格式:fwrite($handle, $string ,$length)n参数:nhandle:必需的,表示之前打开的文件句柄;n$string:必需的,表示要向文件中写入的内容;n$length:可选的,若是指定该参数,则写入的内容是$string串中前$length个字节的数据;若是$length超出了$string的长度,则将变量$string的内容全部写进去。n注意:该函数写完内容之后,并不换行。14fwrite()函数应用小示例n创建页面文件write.php,以写方式打开并创建文件b.txt,向其中写入两行内容分别是“这是第一行内容”和“这是第二行内容”。n代码如下:15运行效果图示n问题思考:nb.txt中内容为什么没有换行?如何解决该问题?若是在写入串的后面增加标记是否起作用? 因为fwrite()函数写完内容之后,不能自动换行,需要在写入内容的后面缀上能够在文本文件中起到回车作用的回车换行符rn,即,需要将第3行和第4行代码修改为:fwrite($fp,这是第一行内容rn);fwrite($fp,这是第二行内容rn); 这里不能通过增加标记完成文件内容的换行,标记只能在浏览器环境下才能被解释执行,放在文本文件中只能显示为标记。16追加写的应用n以追加写方式打开文件b.txt,添加内容“这是追加进来的内容”17本课件制作整理者:郭迎春 仅可用于教学、学习、交流使用 如内容、图片、字体等有侵权,请联系删除。 18