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

相关文章

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho