<style type="text/css">
body{ background-color:#CCFFCC; padding:5px;}
.phpError{ border:1px solid black; background-color:#FF0000; color:white; padding:5px; text-align:center; margin:5px;}
.divFound{ border:1px solid black; border-radius:10px; padding:5px; background-color:#EEEEFF; color:#000000; text-align:left;}
.headers{ background-color:#003300; border:1px solid white; border-radius:10px; padding:10px; color:#EEEEFF; text-align:center;}
.height30{ height:30px;}
</style>
<html>
<head></head>
<body style>
<?PHP
//файлы программы
$thisname='main.php';
$thisname2='patascript.php';
req_dir(__DIR__, 0);
$id=1;
$str='';
function req_dir($dir, $step){
global $thisname;
global $thisname2;
global $id;
global $str;
foreach ($files as $file){ //обход директории
if (($file!='..')and($file!='.')and($file!=$thisname)and($file!=$thisname2)){ //непроверяемые файлы
if (is_dir($dir.'/'.$file)){ //если файл - директория
//$step10 = 10*$step; //отступы для вывода файла (на случай если надо выводить все файлы)
//for ($nah=0; $nah<$step10; $nah++) echo ' ';
//echo '<span style="color:blue">'.$file.'</span><br>';
req_dir($dir.'/'.$file, $step+1); //проверка внутренней директории
}
else { //если файл - файл
//$step10 = 10*$step;
//for ($nah=0; $nah<$step10; $nah++) echo ' ';
//echo '<span style="color:black">'.$file.'</span><br>';
if (filesize($dir.'/'.$file)>3000000
) echo '<div class="phpError" style="background-color:#FF6600;"><b>Размер файла '.$file.' больше 3MB. Чтение невозможно.</b></div>'; // файл больше 3Mb не проверяется (выводится сообщение) $delength=0; //счетчик количества символов, которые будут удалены из начала $str
$j=0; //счетчик количеств скриптов вообще
$flag=0;
while (($pos=strpos($str,'<?PHP '))!==FALSE){ //находим очередной скрипт в файле ($pos-начало) $j++; //j - теперь номер данного скрипта
$end = strpos($str, '?>'); //находим конец скрипта if ($end<$pos) { //если конец скрипта раньше начала - выводим ошибку, завершаем чтение файла
echo '<div class="phpError"><b>Обнаружен конечный тег php раньше начального в '.$file.'. Дальнейшее чтение файла невозможно.</b></div>';
break;
}
$phpz = substr($str, $pos+5
, $end-5
-$pos); //читаем содержимое скрипта
$ev = strpos($phpz, 'eval'); //проверяем есть ли eval
$strto = strpos($phpz, 'strto');
if (($ev!==FALSE)){
if ($flag==0) {$flag=1; echo '<!--div class="headers"><h2>'.$dir.'/'.$file.'</h2-->';}
$color = "#000000";
if (($ev!==FALSE)and($strto!==FALSE)) $color="#FF0000";
else if ($ev!==FALSE) $color="#FF6600";?>
<div class="divFound">
<?PHP echo '<h3>'.$dir.'/'.$file.' (position='.($delength+$pos).') </h3>
<span id="file_'.$id.'" style="color:'.$color.';">'.htmlspecialchars($phpz).'</span><br>';
?>
<div class="height30"><button id="but_<?PHP echo $id;?>" onclick="protas('<?PHP echo $id;?>','<?PHP echo $ser;?>',<?PHP echo $j;?>)">delete</button></div></div>
<?PHP $id++;
echo '<br>';
}
$delength+=$end+2;
}
if ($flag > 0){echo '<!--/div-->';}
}
}
}
}
}
?>
</body>
</html>
<script type="text/javascript">
function getXmlHttp(){
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
stop = 0;
function protas(i, ffile, j) {
if (stop==0){
var req = getXmlHttp()
req.onreadystatechange = function() {
if (req.readyState == 4) {
if(req.status == 200) {
res = req.responseText;
if (res=='save') document.getElementById("file_"+i).style.color="#0000FF";
if (res=='save') document.getElementById("but_"+i).style.display="none";
else if (res=='cant') alert('ERROR!');
else alert(res);
stop = 0;
}
}
}
stop=1;
req.open('GET', 'patascript.php?file='+ffile+'&j='+j, true);
req.send(null); // отослать запрос
}
}
</script>