在PHP中判断文件是否被修改过
发表于:2023-03-02 17:29:34浏览:781次
在网站的管理系统中,有时需要查看某个文件是否被修改过、在什么时间被修改的、最后的修改时间是什么时候,本实例就可以实现这个功能,对表单中提交的文件进行判断,检测出修改时间。
关键技术
主要应用filectime()和filemtime()函数,检测文件的incode最后改变时间和最后的修改时间,并应用date()函数对检测返回的时间戳进行格式化。
filectime()函数,返回指定文件filename的inode最后改变时间,语法如下:
int filectime(string filename);
成功则返回UNIX时间戳,否则返回FALSE。
filemtime()函数,返回指定文件filename的最后修改时间,语法如下:
成功则返回UNIX时间戳,否则返回FALSE。
注意:在大多数 Unix 文件系统中,当一个文件的 inode 数据被改变时则该文件被认为是修改了。也就是说,当文件的权限,所有者,所有组或其它 inode 中的元数据被更新时。参见 filemtime()(这才是你想用于在 Web 页面中建立“最后更新时间”脚注的函数)和 fileatime()。
注释:某些 Unix 说明文本中把 ctime 说成是该文件建立的时间,这是错的。在大多数 Unix 文件系统中,没有 Unix 文件的建立时间。
设计过程
首先,设计网页页面。然后,创建一个表单,通过文件域提交要判断的文件。接着,获取表单中提交的文件路径,应用filectime()和filemtime()函数对提交的文件进行检测。最后,输出检测结果。
文件的关键代码如下:
<?php
$file=iconv("utf-8","gb2312",$_POST['files']); //实现编码格式的转换
if(file_exists($file)){ //判断文件是否存在
$change_time=filectime($file); //获取文件的最后incode时间
$time=date("Y-m-d h:i:s",$change_time); //时间戳的格式化
$last_time=filemtime($file); //获取文件的最后修改时间
$times=date("Y-m-d h:i:s",$last_time); //时间戳的格式化
}else{
$result="该文件不存在";
}
?>
获取文件的最后访问时间。
通过文件系统函数不但可以获取文件的最后修改时间,而且可以获取文件的最后访问时间,其应用的是fileatime()函数。