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

devtools/2024/10/18 14:14:33/

效果图 

上代码:

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对比工具:


http://www.ppmy.cn/devtools/14193.html

相关文章

Docker NetWork (网络)

Docker 为什么需要网络管理 容器的网络默认与宿主机及其他容器都是相互隔离的&#xff0c;但同时我们也要考虑下面的一些问题&#xff0c; 比如 多个容器之间是如何通信的容器和宿主机是如何通信的容器和外界主机是如何通信的容器中要运行一些网络应用(如 nginx、web 应用、数…

LabVIEW专栏八、类

该章目的是可以开发仪器类。 一、类的概述 一般来说类有三大特性&#xff0c;封装&#xff0c;继承和多态。 在实际项目中&#xff0c;最主要是继承和多态&#xff0c;要搞清楚这两者的概念和在LabVIEW中是怎样应用的。在LabVIEW中&#xff0c;面向对象编程用到的就是LabVIE…

vue keepAlive的使用

一、了解keepAlive 1.1 Vue 中的 keep-alive 是什么? keep-alive 是 Vue.js 的一个内置组件,它用于缓存不活动的组件实例,而不是销毁它们。在 Vue 应用中,当组件被包含在 keep-alive 组件中时,该组件在切换时不会被销毁,而是被保存在一个内存中,这可以显著提升大型应用…

Linux权限敏感文件 | 误操作chmod -R 777 /*

一、【写在前面】 最近笔者跳槽&#xff0c;有一段时间没写博客&#xff0c;最近会把这个博客更新起来&#xff0c;一是作为本人的技术总结&#xff0c;二是分享问题。 初学者经常会认为只有更改了文件才会导致系统不正常&#xff0c;但在Linux中更改权限也会导致很多奇奇怪怪…

数据集的图例怎么生成

数据集有13个分类&#xff0c;每个分类都有颜色&#xff0c;怎么生成色块的图例。 import matplotlib.pyplot as plt import matplotlib.patches as mpatchess3dis_color [[255, 248, 220], [220, 220, 220], [139, 71, 38], [238, 197, 145], [70, 130, 180], [179, 238, 58…

Vue3的语法糖进行父子组件传值

父组件 // 对于父组件来说&#xff0c;跟Vue2的写法差不多 <template><children :selection"multipleSelection"></children> </template> <script setup lang"ts">// 定义变量 let multipleSelection: Array<object>…

SWCTF

easy_php 源码 <?php// flag is in flag.php highlight_file(__FILE__); ini_set(display_errors, 0); error_reporting(0);if (isset($_GET[myon1]) && isset($_GET[myon2]) && isset($_GET[myon3])) {$myon1 $_GET[myon1];$myon2 $_GET[myon2];$myon…

oracle 12c+ max_string_size参数

一个客户的数据库版本是19.3,在做数据库复制的时候,目标端报错了,查看了一下问题发现表的字段长度有不对,在12c以前我们都知道varchar的长度最大是4000,但是客户这里居然有32767: 把客户的建表语句弄出来,放到我的一个19c的测试环境进行测试: 发现报错了: 这里报错很明显了,是M…