PHP定期给自己网站目录做个特征镜像供快速对比

2024-04-24 22:12

本文主要是介绍PHP定期给自己网站目录做个特征镜像供快速对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

效果图 

上代码:

<style>
h1{font-size:24px;line-height:180%;font-weight:600;margin:1px 2px;color:#0180cf;}
h2{font-size:20px;line-height:140%;font-weight:600;margin:2px 4px;color:green;}
h3{font-size:16px;line-height:140%;font-weight:600;margin:2px 4px;color:green;}
h4{font-size:12px;line-height:120%;font-weight:300;margin:1px 2px;color:blue;}
b{font-size:14px;color:red;} 
form{margin:11px auto;padding:10px;text-align:left;width:99%;border:1px #0180CF solid;}
select,input{padding:5px;}
button,input[type='submit']{background:green;color:white;padding:5px;}
input[type=text]{width:254px;}
</style>
<?php$ddtt = date("YmdHis");
$domas = (isset($_GET['do']))?addslashes($_GET['do']):'';
$folds = (isset($_POST['time']))?addslashes($_POST['time']):'';
if( strlen($folds)>1){
if($folds=="AllFolder") $folds = '';
}else{
?>
<form name="qu" method="post" action="" >
<select name="time" id="time" >
<?php
$dir_name = "../";
$dir = opendir($dir_name); 
$fileArr = array(); 
while ($file_name = readdir($dir)) { 
if (($file_name ==".") || ($file_name == "..")) { 
} else if(is_dir($dir_name.$file_name)) {
$fName = "$dir_name$file_name"; 
$fTime = filemtime($fName); 
$fileArr[$file_name] = $fTime; 
//可以文件夹分类,选择对应的目录查询:如果不分一个文件夹即可
echo "<option value=\"{$file_name}\">$file_name</option>";}
}
echo "<option value=\"AllFolder\">AllFolder</option>";
?>
</select>
<button id="button" >立即显示</button>
</form>
<?phpexit();
}
function charaget($data){
if(!empty($data) ){
$fileType = mb_detect_encoding($data , array('UTF-8','GBK','LATIN1','BIG5')) ;
if( $fileType != 'UTF-8'){
$data = mb_convert_encoding($data ,'utf-8' , $fileType);
}
}
return $data;
}
function txtarea($nb,$folds,$ht="88vh") {global $ddtt;$json = json_encode($nb, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);return "<textarea style='display:inline; height:$ht;width:38vw;'>$json</textarea>";
}
function characet($data){
if(!empty($data) ){
$fileType = mb_detect_encoding($data , array('UTF-8','GBK','LATIN1','BIG5')) ;
if( $fileType != 'GBK'){
$data = mb_convert_encoding($data ,'GBK' , $fileType);
}
}
return $data;
}
function my_scandir($dir){$files = array(); $filetxt=[];if ( $handle = opendir($dir) ) {while ( ($file = readdir($handle)) !== false ) {if ( $file != ".." && $file != "." ) {if ( is_dir($dir . $file. "" ) ) {
if(stristr($dir . $file,"/datar") || stristr($dir.$file,"/Tool@")){//忽略的文件夹
}else{$filetxt[$file] =  my_scandir($dir . $file. "/" );
}} else{$filep = $dir . $file;$filet = substr($file,-3);$filep = charaget($filep); //$dir . $file;$filea = charaget($file);$b = preg_replace("/[^0-9^A-Z^a-z]+/u", '', $dir);
$blacki = "-laydate.css-laydate.js-"; //不搜索的文件名称
$whitei = "-php-css-.js-htm-tml-asp-txt-inc-sql-"; //搜索的文件后缀列表(一律后三位)
if(stristr($whitei,"-{$filet}-") && !stristr($blacki,"-{$file}-")){
if (is_file($filep)){}else{$filep = characet($filep);}
$filey = charaget($filep);$filetxt[$filey]["filename"] = $filey;$filetxt[$filey]["filesize"] = filesize($filey);$filetxt[$filey]["fileedit"] = filemtime($filey);$filetxt[$filey]["filejian"] = filectime($filey);$filetxt[$filey]["filesmd5"] = md5_file($filey);}}}}closedir($handle);return $filetxt;}
} 
if($folds==""){$soudir = "../";}else{$soudir = "../{$folds}/";}
if(is_dir($soudir)) {
$result = my_scandir($soudir);
echo txtarea($result,$folds);
}else{
echo "<h1>文件夹<b>{$soudir}</b>不存在!</h1>\r\n";
}

然后用网络免费的对比工具(比如Mergely等)对比各次文件特征比如文件大小对比

以及HASH值对比,文件时间对比,文件增减对比等

Mergely对比工具:

这篇关于PHP定期给自己网站目录做个特征镜像供快速对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/932974

相关文章

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d