搜索文件很簡單只要用戶輸入目錄我們就會自動遍歷目錄找到相關聯的文件名並列出來,下面我們一起來看看吧。
php文件查找程序,輸入一個路徑確定後會遍歷目錄下所有的文件和文件夾,通過遞歸可以找到文件夾下面的每一個文件,再通過文件名和輸入的關鍵字匹配,則可以查找到你想要的文件。對於本地,我們可以利用windows自帶的查找去進行查找,但是對於線上的話,如查找ftp空間裡面文件,本程序是很有用的。
php文件查找器源碼:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>php版文件查找(file search)</title>
</head>
<body>
<form action="" method="post">
<p> 文件查找(注:區分大小寫)</p>
<p>路徑:<input type="text" name="path" /></p>
<p>查找:<input type="text" name="key" /></p>
<p><input type="submit" name="sub" value=" 開 始 " /></p>
</form>
</body>
</html>
<?php
/*
* 注:區分大小寫
*/
if(!empty($_POST['path'])&&!empty($_POST['key'])){
echo "在路徑 ".$_POST['path']."/ 中查找 ".$_POST['key']." 的結果為:<hr/>";
$file_num = $dir_num = 0;
$r_file_num = $r_dir_num= 0;
$findFile = $_POST['key'];
function delDirAndFile( $dirName ){
if ( $handle = @opendir( "$dirName" ) ) {
while ( false !== ( $item = readdir( $handle ) ) ) {
if ( $item != "." && $item != ".." ) {
if ( is_dir( "$dirName/$item" ) ) {
delDirAndFile( "$dirName/$item" );
} else {
$GLOBALS['file_num']++;
if(strstr($item,$GLOBALS['findFile'])){
echo " <span><b> $dirName/$item </b></span><br />n";
$GLOBALS['r_file_num']++;
}
}
}
}
closedir( $handle );
$GLOBALS['dir_num']++;
if(strstr($dirName,$GLOBALS['findFile'])){
$loop = explode($GLOBALS['findFile'],$dirName);
$countArr = count($loop)-1;
if(empty($loop[$countArr])){
echo " <span style='color:#297C79;'><b> $dirName </b></span><br />n";
$GLOBALS['r_dir_num']++;
}
}
}else{
die("沒有此路徑!");
}
}
delDirAndFile($_POST['path']);
echo "<hr/>本次共搜索到".$file_num."個文件,文件夾".$dir_num."個<br/>";
echo "<hr/>符合結果的共".$r_file_num."個文件,文件夾".$r_dir_num."個<br/>";
}
?>
上面只是查找文件,下面看一個查找文件中的字符是否包括我們要找的東西
自己寫的一個批量查找文件內容的php程序,我是拿來掃描文件特征碼的,現在我 貼出代碼,供大家參考
代碼如下 復制代碼
<?php
if ($_POST ['Submit'] == '開始') {
$total = 0; //文件總數
$dangerous = array (); //危險文件
$dangerous_content = $_POST ["sstr"];
$find_path = $_POST ["searchpath"];
$shortname = $_POST ["shortname"];
echo "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>";
echo "<html>";
echo "<head>";
echo "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";
echo "</head>";
echo "<body>";
$begin_time=date("U");
// $dangerous_content = "小亮,Root_GP,Root_CSS,c99sh_updateurl,c99sh_sourcesurl,640684770";
visitFile ( $find_path, $shortname );
$end_time=date("U");
foreach ($dangerous as $d){
echo $d."<br/>";
}
echo "查找文件總數:" . $total." 危險文件:".count($dangerous)." 總用時".($end_time-$begin_time)."秒";
echo "</body>";
echo "</html>";
//if (! empty ( $dangerous )) {
//foreach ( $dangerous as $dan ) {
//echo "[error]" . $dan . "<br/>";
//}
//}
exit();
}
function visitFile($path, $ext) {
global $total;
global $dangerous_content;
$fdir = dir ( $path );
//echo "Handle: " . $d->handle . "<br>";
// echo "Path: " . $fdir->path . "<br>";
set_time_limit ( 24 * 60 * 60 );
while ( ($entry = $fdir->read ()) !== false ) {
$pathSub = $path . "\" . $entry;
if ($entry != '.' && $entry != '..') {
if (is_dir ( $pathSub )) {
visitFile ( $pathSub, $ext );
} else {
$exten = explode ( '.', $entry );
$exten = array_reverse ( $exten ); //把上面數組倒序
// foreach ()
$shortnames = explode ( '|', $ext );
foreach ( $shortnames as $sn ) {
if (! empty ( $exten ) && $sn == $exten [0]) {
$total = $total + 1;
//echo "開始分析文件:".$path."/".$entry . "<br>";
$content = file_get_contents ( $path . "/" . $entry ); //這個性能較好
$content = strtolower ( $content ); //全部轉為小寫
$dangerous_content = strtolower ( $dangerous_content ); //全部轉為小寫
isExists ( $dangerous_content, $path . "/" . $entry, $content );//這個方法太耗內存了,希望有高手能解決一下
}
}
//sleep(1);
}
}
}
$fdir->close ();
}
function isExists($str, $filename, $content) {
global $dangerous;
//sleep ( 1 );
set_time_limit ( 10 );
$arr = explode ( ',', $str );
$signature="特征碼:";
if (! empty ( $arr )) {
// $content = file_get_contents ( $filename ); //這個性能較好
$content = strtolower ( $content ); //全部轉為小寫
$error_count = 0;
foreach ( $arr as $a ) {
if (trim ( $a ) != "") {
if (strpos ( $content, $a )) {
$error_count = $error_count + 1;
$signature.=$a." ";
}
}
}
if ($error_count > 0) {
// $dangerous [] = $filename;
$dangerous [] = "[error] " . $error_count . " " .$signature." " . $filename;
//echo "[error] " . $error_count . " " .$signature." " . $filename . "<br/>";
}else{
//echo "[ok] " . $filename . "<br/>";
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>批量查詢文件</title>
<style type="text/css">
body {
background: #FFFFFF;
color: #000;
font-size: 12px;
}
#top {
text-align: center;
}
h1,p,form {
margin: 0;
padding: 0;
}
h1 {font-size; 14px;
}
</style>
</head>
<body>
<div id="top">
<h1>批量查找程序</h1>
<div>本程序可以掃描指定目錄的所有文件,進行<strong>內容查找</strong>。<br />
在文件數量非常多的情況下,本操作比較占用服務器資源,請確腳本超時限制時間允許更改,否則可能無法完成操作。</div>
</div>
<form action="<?=$_SERVER ['SCRIPT_NAME']?>" name="form1"
target="stafrm" method="post">
<table width="95%" border="0" align="center" cellpadding="3"
cellspacing="1" bgcolor="#666666">
<tr>
<td width="10%" bgcolor="#FFFFFF"><strong> 起始根路徑:</strong></td>
<td width="90%" bgcolor="#FFFFFF"><input name="searchpath" type="text"
id="searchpath" value="D:/" size="20" /> 點表示當前目錄,末尾不要加/ </td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong> 文件擴展名:</strong></td>
<td bgcolor="#FFFFFF"><input name="shortname" type="text"
id="shortname" size="20" value="htm|html|shtml|php" /> 多個請用|隔開</td>
</tr>
<tr id="rpct">
<td height="64" colspan="2" bgcolor="#FFFFFF">
<table width="100%" border="0" cellspacing="1" cellpadding="1">
<tr bgcolor="#EDFCE2">
<td colspan="4"><strong>內容查找選項:</strong> <input type="checkbox"
name="isreg" value="1" />使用正則表達式</td>
</tr>
<tr>
<td colspan="4">查找內容類默認使用字符串查找,也可以使用正則表達式(需勾選)。"查找為"不填寫的話,就表示刪除"查找內容"。
<br />com,system,exec,eval,escapeshell,cmd,passthru,base64_decode,gzuncompress
</td>
</tr>
<tr>
<td width="10%"> 查找內容:</td>
<td width="36%" colspan="3"><textarea name="sstr" id="sstr"
style="width: 90%; height: 45px">小亮,Root_GP,Root_CSS,c99sh_updateurl,c99sh_sourcesurl,640684770,hx_dealdir,while(1)</textarea></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" height="20" align="center" bgcolor="#E2F5BC"><input
type="submit" name="Submit" value="開始" class="inputbut" /></td>
</tr>
</table>
</form>
<table width="95%" border="0" align="center" cellpadding="3"
cellspacing="1" bgcolor="#666666">
<tr bgcolor="#FFFFFF">
<td id="mtd">
<div id='mdv' style='width: 100%; height: 100;'><iframe name="stafrm"
frameborder="0" id="stafrm" width="100%" height="100%"></iframe></div>
<script type="text/javascript">
document.all.mdv.style.pixelHeight = screen.height - 450;
</script></td>
</tr>
</table>
</body>
</html>