PHP是个不安全的编程语言,具有破坏性,怎么说呢?PHP可以让服务器接收客户端传来的文件,如果处理不当没有做好检查,这个文件可能是个木马病毒,服务器就会中毒。PHP能修改服务器本地的文件,如果PHP脚本中有恶意的代码,就可以对服务器大肆破坏,做各种修改。
对本地(服务器)文件的操作(增删查改),PHP提供了非常丰富的函数库,把功能简化了很多,使用很简单。当我们去学习C、Java时,对文件操作的知识都是非常重点的内容,需要学习很多东西。而PHP这里就不用了,在PHP中对文件操作依然很重要,但不会把它当重点学习。
这几个是对目录操作的函数
getcwd — 取得当前工作目录
看到这个示例是不是觉得getcwd()和dirname(_FILE_)的功能一样,其实不是的,假如我们从b目录里引入根目录的index.php文件:
是不是不一样了。getcwd()获取的是入口文件所在的目录,dirname(_FILE_)获取的是代码所在文件所在的目录。
这里面包括了所有操作文件的函数,每一个函数都应该去仔细看看。
fopen — 打开文件或者 URL
fclose — 关闭一个已打开的文件指针
fopen这个函数作用打开一个文件,它的返回值是什么?是不是文件里的内容——字符串?不是的。它的返回值是一个资源类型的变量。
学到这,我们终于接触到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真地对客户端主机造成伤害了,那肯定是浏览器“叛变”了。