php實(shí)現(xiàn)批量刪除掛馬文件及批量替換頁(yè)面內(nèi)容完整實(shí)例
本文實(shí)例講述了php實(shí)現(xiàn)批量刪除掛馬文件及批量替換頁(yè)面內(nèi)容的方法。分享給大家供大家參考,具體如下:
<?php
# functionality: 本程序可以掃描指定目錄的所有文件,進(jìn)行內(nèi)容替換??捎糜诒慌繏祚R的刪除以及批量更新頁(yè)面某些內(nèi)容。
# 本程序適用于對(duì)UTF-8的頁(yè)面進(jìn)行修改。
set_time_limit(3600); //腳本運(yùn)行時(shí)間
?>
<?php
if($_POST['Submit']=='開始執(zhí)行操作'){
$dir = $_POST['searchpath'];
$shortname = $_POST['shortname'];
$isall = $_POST['isall'];
$isreg = $_POST['isreg'];
if (!get_magic_quotes_gpc()) {
$sstr = $_POST['sstr'];
$rpstr = $_POST['rpstr'];
} else {
$sstr = stripslashes($_POST['sstr']);
$rpstr = stripslashes($_POST['rpstr']);
}
//分析shortname
$arrext = explode ("|",$shortname);
if (!is_dir($dir)) return;
if ($sstr == '') return;
//把末尾的/去掉
if(substr($dir,-1)=='/') $dir = substr($dir,0,strrpos($dir,"/"));
//羅列所有目錄
if ($isall == 1){
hx_dirtree($dir);
}else{
hx_dealdir($dir);
}
exit();
}
function hx_dirtree($path="."){
global $sstr,$rpstr,$isreg,$arrext;
$d = dir($path);
while(false !== ($v = $d->read())) {
if($v == "." || $v == "..") continue;
$file = $d->path."/".$v;
if(is_dir($file)) {
echo "<p>$v</p>"; hx_dirtree($file);
}else{
$ext=substr(strrchr($v,"."), 1);
if( in_array($ext , $arrext) ){
echo "<li>$file ";
$body = file_get_contents($file);
if($isreg == 1){
$body2 = preg_replace($sstr, $rpstr, $body);
}else{
$body2 = str_replace($sstr, $rpstr, $body);
}
if($body != $body2 && $body2 != ''){
tofile($file,$body2);
echo ' OK';
}else{
echo ' NO';
}
echo '</li>';
}
}
}
$d->close();
}
function hx_dealdir($dir){
global $sstr,$rpstr,$isreg,$arrext;
if ($dh = opendir($dir)) {
while (false !== ($file = readdir($dh))) {
if(filetype($dir.'/'.$file)=='file'){
$ext=substr(strrchr($file,"."), 1);
if( in_array($ext , $arrext) ){
echo "<li>$file ";
$body = file_get_contents($dir.'/'.$file);
if($isreg == 1){
$body2 = preg_replace($sstr, $rpstr, $body);
}else{
$body2 = str_replace($sstr, $rpstr, $body);
}
if($body != $body2 && $body2 != ''){
tofile($dir.'/'.$file,$body2);
echo ' OK';
}else{
echo ' NO';
}
echo '</li>';
}
}
}
closedir($dh);
}
}
//把生成文件的過(guò)程寫出函數(shù)
function tofile($file_name,$file_content){
if (is_file ($file_name)){
@unlink ($file_name);
}
$handle = fopen ($file_name,"w");
if (!is_writable ($file_name)){
return false;
}
if (!fwrite ($handle,$file_content)){
return false;
}
fclose ($handle); //關(guān)閉指針
return $file_name;
}
?>
<!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>批量替換程序(UTF-8版)</h1>
<div>本程序可以掃描指定目錄的所有文件,進(jìn)行<strong>內(nèi)容替換</strong>??捎糜诒慌繏祚R的刪除以及批量更新頁(yè)面某些內(nèi)容。<br/>
在文件數(shù)量非常多的情況下,本操作比較占用服務(wù)器資源,請(qǐng)確腳本超時(shí)限制時(shí)間允許更改,否則可能無(wú)法完成操作。</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="./test" size="20" />
點(diǎn)表示當(dāng)前目錄,末尾不要加/ <input type="checkbox" name="isall" value="1" />包含此目錄下所有目錄</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong> 文件擴(kuò)展名:</strong></td>
<td bgcolor="#FFFFFF"><input name="shortname" type="text" id="shortname" size="20" value="php|htm" />
多個(gè)請(qǐng)用|隔開</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>內(nèi)容替換選項(xiàng):</strong> <input type="checkbox" name="isreg" value="1" />使用正則表達(dá)式</td>
</tr>
<tr>
<td colspan="4">替換內(nèi)容類默認(rèn)使用字符串替換,也可以使用正則表達(dá)式(需勾選)。"替換為"不填寫的話,就表示刪除"替換內(nèi)容"。</td>
</tr>
<tr>
<td width="10%"> 替換內(nèi)容:</td>
<td width="36%"><textarea name="sstr" id="sstr" style="width:90%;height:45px"></textarea></td>
<td width="10%">替 換 為:</td>
<td><textarea name="rpstr" id="rpstr" style="width:90%;height:45px"></textarea></td>
</tr>
</table></td>
</tr>
<tr>
<td colspan="2" height="20" align="center" bgcolor="#E2F5BC"><input type="submit" name="Submit" value="開始執(zhí)行操作" 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>
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP替換操作技巧總結(jié)》、《PHP圖形與圖片操作技巧匯總》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php排序算法總結(jié)》、《PHP常用遍歷算法與技巧總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《php正則表達(dá)式用法總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
深入file_get_contents函數(shù)抓取內(nèi)容失敗的原因分析
本篇文章是對(duì)file_get_contents函數(shù)抓取內(nèi)容失敗的原因進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
PHP連接及操作PostgreSQL數(shù)據(jù)庫(kù)的方法詳解
這篇文章主要介紹了PHP連接及操作PostgreSQL數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式分析了php針對(duì)PostgreSQL數(shù)據(jù)庫(kù)的基本連接以及增刪改查等相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
php curl 模擬登錄并獲取數(shù)據(jù)實(shí)例詳解
cURL 是一個(gè)功能強(qiáng)大的PHP庫(kù),使用PHP的cURL庫(kù)可以簡(jiǎn)單和有效地抓取網(wǎng)頁(yè)并采集內(nèi)容,設(shè)置cookie完成模擬登錄網(wǎng)頁(yè),curl提供了豐富的函數(shù),開發(fā)者可以從PHP手冊(cè)中獲取更多關(guān)于cURL信息。本文以模擬登錄開源中國(guó)(oschina)為例,需要的朋友可以參考下2016-12-12
關(guān)于php支持的協(xié)議與封裝協(xié)議總結(jié)(推薦)
這篇文章主要給大家介紹了關(guān)于php支持的協(xié)議與封裝協(xié)議的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用PHP具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
PHP學(xué)習(xí)筆記 (1) 環(huán)境配置與代碼調(diào)試
學(xué)習(xí)php第一步就是需要配置php運(yùn)行環(huán)境,這個(gè)是基礎(chǔ),需要的朋友可以參考下。2011-06-06
Mac系統(tǒng)下使用brew搭建PHP(LNMP/LAMP)開發(fā)環(huán)境
這篇文章主要介紹了Mac系統(tǒng)下使用brew搭建PHP(LNMP/LAMP)開發(fā)環(huán)境,本文講解了使用Brew手動(dòng)搭建PHP的開發(fā)環(huán)境,包括Apache、Nginx、PHP、MySQL、MongoDB、PHPMyAdmin等配置,需要的朋友可以參考下2015-03-03

