第六章:第11节 PHP内置函数——与文件操作相关函数、资源数据类型

更新于:2017-05-07 19:20:22

PHP是个不安全的编程语言,具有破坏性,怎么说呢?PHP可以让服务器接收客户端传来的文件,如果处理不当没有做好检查,这个文件可能是个木马病毒,服务器就会中毒。PHP能修改服务器本地的文件,如果PHP脚本中有恶意的代码,就可以对服务器大肆破坏,做各种修改。


对本地(服务器)文件的操作(增删查改),PHP提供了非常丰富的函数库,把功能简化了很多,使用很简单。当我们去学习C、Java时,对文件操作的知识都是非常重点的内容,需要学习很多东西。而PHP这里就不用了,在PHP中对文件操作依然很重要,但不会把它当重点学习。


1.png

这几个是对目录操作的函数


getcwd取得当前工作目录


1.png

1.png

看到这个示例是不是觉得getcwd()和dirname(_FILE_)的功能一样,其实不是的,假如我们从b目录里引入根目录的index.php文件:


1.png

1.png

是不是不一样了。getcwd()获取的是入口文件所在的目录,dirname(_FILE_)获取的是代码所在文件所在的目录。


1.png

这里面包括了所有操作文件的函数,每一个函数都应该去仔细看看。


fopen打开文件或者 URL

fclose关闭一个已打开的文件指针



fopen这个函数作用打开一个文件,它的返回值是什么?是不是文件里的内容——字符串?不是的。它的返回值是一个资源类型的变量。

1.png

1.png

学到这,我们终于接触到PHP第七种数据类型了。(整数型、浮点型、字符串型、null、布尔型、数组型)


资源类型是一个特殊的数据类型,它不能以字符串的形式显示在页面里。记住打开一个资源类型,当用完它以后要关闭掉,不然在脚本运行完之前会一直占用资源。资源类型数据的获取只能通过PHP提供的内置函数或内置类得到,有打开就会有关闭。


用fclose函数关闭fopen打开的资源,fopen我们这里可以把它想象成是一个“指针”或“鼠标箭头”。


fread读取文件(可安全用于二进制文件)

fwrite写入文件(可安全用于二进制文件)

fgets从文件指针中读取一行

fgetc从文件指针中读取字符


打开一个文件后,可用这几个函数对文件读或写。fopen打开文件是有很多种模式的,有些是只能读不能写,手册里写的非常详细。


basename返回路径中的文件名部分


copy拷贝文件


dirname返回路径中的目录部分


file_exists检查文件或目录是否存在


file_exists还是用的很多的,为了防止程序出错,对文件的一些操作都会先检查下这个文件存不存在。


file_get_contents将整个文件读入一个字符串

file_put_contents将一个字符串写入文件


这两个函数非常有用,用的非常多。它直接把 打开文件 -》 读(写)-》 关闭文件 这三个步骤写到一个函数里了,本应该很多行的代码一个函数就搞定了。


filemtime取得文件修改时间


flock轻便的咨询文件锁定


给一个文件上锁,可以防止多个进程同时修改一个文件。


is_dir判断给定文件名是否是一个目录


is_file判断给定文件名是否为一个正常的文件


mkdir新建目录


用这个函数可以新建文件夹,非常重要。


move_uploaded_file将上传的文件移动到新位置


上传文件时我们用过这个函数。


rename重命名一个文件或目录


rmdir删除目录


unlink删除文件


额外说明:


PHP的破坏性只是对服务器来说,PHP不会对客户端的电脑文件造成伤害,也不会偷偷窃取客户端的各种信息。


客户端(浏览器)与服务器之间是通过http协议(基于TCP协议)进行相互通信的,浏览器“告诉”服务器的信息很有限。PHP根本不可能获取到客户端主机的这些信息,比如计算机名、mac地址、硬盘里的各种文件信息等(IP地址不是靠浏览器告诉的),因为浏览器根本不“告诉”服务器。PHP也不能对客户端的电脑文件造成伤害,因为服务器没有权限指使浏览器去做这些“伤天害理之事”。如果有一天PHP真地对客户端主机造成伤害了,那肯定是浏览器“叛变”了。


本节学习代码》》》