Показать сообщение отдельно

  #73  
Старый 14.04.2007, 19:07
mamamot
Познающий
Регистрация: 20.02.2007
Сообщений: 41
Провел на форуме:
38505

Репутация: 48
Отправить сообщение для mamamot с помощью ICQ
По умолчанию

Полностью написанный мною файловый менеджер на пхп.
Включает в себя текстовый редактор файлов, функцию рекурсивного удаления каталогов, загрузки файлов на сервер и создания новых папок...+ позитивный дезигн и еще много всего - в одном файле!!!
PHP код:
<?php
/////////////////////////////////////////////////////////////////
/////////////////////////php file browser/////////////////////////
///////////////coded by mamamot spec. for antichat.ru ///////////////
//////////////////////////////2007//////////////////////////////

//проверяем содержимое массива POST
    
if(isset($_POST['do']))
    {
        
//записываем в файл после редактирования
        
if($_POST['do']=="edit")
        {
                
$fd=fopen($_POST['filename'], w);
                if(!
$fd) exit("Ошибка!");
                
fwrite($fd$_POST['content']);
                
fclose($fd);
                echo 
"Редактирование успешно завершено!";
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$_POST['p'].'" >Вернуться</a>';
        }
        
//загружаем файл на сервер
        
elseif($_POST['do']=="upload")
        {        
            if(
copy($_FILES['filename']['tmp_name'], $_POST['p']."/".$_FILES['filename']['name']))
            {
                echo(
"Файл успешно загружен: <br />");
                echo(
$_FILES['filename']['name']);
                echo 
'<br />';
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$_POST['p'].'" >Вернуться</a>';
            }
            else
            {
                echo(
"Ошибка!<br />");
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$_POST['p'].'" >Вернуться</a>';
            }
        }
        exit();
    }
?>
<!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>
        <title><? echo "php file browser"; if(isset($_GET['p'])) echo " - ".$_GET['p']; ?></title>
        <style type="text/css" >
            body
            {
                font-family: Verdana, Arial;
                font-size: 14px;
                background-color: #fcc;
            }
            tr.header
            {
                background-color: #ccf;
                font-family: Verdana, Arial;
                font-size: 14px;
            }
            tr.one
            {
                background-color: #cff;
                font-family: Verdana, Arial;
                font-size: 14px;
            }
            tr.two
            {
                background-color: #fc6;
                font-family: Verdana, Arial;
                font-size: 14px;
            }
            h2
            {
                font-family: Verdana, Arial;
                font-size: 22px;
                color:#000;
            }
        </style>
    </head>
    <body>
        <?php
            
//Удаление файла
            
function delete_file($dir$name)
            {
                if(!@
unlink($dir."/".$name))
                {
                    echo 
"Доступ запрещен!";
                }
                else
                {
                    echo 
"Удалено успешно!";
                }
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'" >На главную</a>';
            }
            
            
//рекурсивное удаление папки
            
function delete_dir($dir)
            {
                
//открываем папку
                
$dd=opendir($dir);
                
//просматриваем все файлы
                
$todo=true;
                while((
$file readdir($dd)))
                {
                    
//если файл - удаляем
                    
if(is_file("$dir/$file"))
                    {
                        if(!
unlink("$dir/$file"))
                        {
                            exit(
"Ошибка-доступ запрещен!");
                        }
                    }
                    
//если папка - вызываем рекурсивно функцию удаления
                    
elseif(is_dir("$dir/$file") && $file!='.' && $file!='..')
                    {
                        
delete_dir("$dir/$file");
                    }


                }
                
//закрываем папку
                
closedir($dd);
                
//удаляем саму уже пустую директорию
                
rmdir($dir);
                echo 
"Успешно удалено!<br />";
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'" >На главную</a>';
            }
            
            
//вывод формы загрузки файла
            
function upload_form()
            {
                echo 
'<h2>Загрузка файла в '.$_GET['p'].'</h2>
                <form method="post" enctype="multipart/form-data" >
                    <input type="file" name="filename" /><br />
                    <input type="hidden" name="p" value="'
;
                if(isset(
$_GET['p']))
                {
                    echo 
$_GET['p'].'" />';
                }
                else
                {
                    echo 
'." />';
                }
                echo 
'<input type="hidden" name="do" value="upload" />';
                echo 
'<input type="submit" value="Загрузить" />';
                echo 
'</form>';
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$_GET['p'].'" >На главную</a>';
            }
            
            
//вывод информации о файле
            
function file_info()
            {
                
$query=$_GET['p']."/".$_GET['name'];
                echo 
"<h2>Информация о файле: $query</h2>";
                echo 
"Размер: ".filesize($query)."<br />";
                
$type=filetype($query);
                echo 
"Тип: ".$type."<br />";
                echo 
"Последнее изменение: ".date("d.m.Y G:i:s",filemtime($query))."<br />";
                if(
$type=="file")
                {
                    echo 
'<a href="'.$query.'" >Скачать/просмотреть</a><br />';
                    echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=delete_f&p='.$query.'" >Удалить файл</a><br />';
                    echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=edit&p='.$_GET['p'].'&name='.$_GET['name'].'" >Редактировать(текстовый режим)</a><br />';
                }
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$_GET['p'].'" >На главную</a>';
            }
            
            
//создание папки
            
function makedir($query$dirname)
            {
                
$custom=$query."/".$dirname;
                if(!
mkdir($custom,0700))
                {
                    echo 
"Ошибка создания каталога!";
                }
                else
                {
                    echo 
"Успешно создано!";
                }
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$query.'" >Вернуться</a>';
            }
            
            
//вывод формы редактирования файла
            
function edit_file($dir$name)
            {
                
$query=$dir.'/'.$name;
                
$fd=fopen($query"r");
                if(
$fd)
                {
                    
$buf=fread($fdfilesize($query));
                    
fclose($fd);
                    echo 
'<h2>Редактирование файла</h2>';
                    echo 
'<form method="POST" >';
                    echo 
'<textarea cols="100" rows="50" name="content" >'.$buf.'</textarea><br />';
                    echo 
'<input type="hidden" name="do" value="edit" />';
                    echo 
'<input type="hidden" name="p" value="'.$dir.'" />';
                    echo 
'<input type="hidden" name="filename" value="'.$dir.'/'.$name.'" />';
                    echo 
'<input type="submit" name="submit" value="Сохранить" />';
                    echo 
'</form>';
                }
                else
                {
                    echo 
'Ошибка!';
                }
                echo 
'<a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$dir.'" >Вернуться</a>';                
            }
            
            
//проверяем режим вывода
            
if(!isset($_GET['do']) || $_GET['do']=="browse")
            {
                
//основная функция - главное окно работы с файлами и папками
                
if(!isset($_GET['p']))
                {
                    
$dir ".";
                    echo 
"<h2>Корневая директория<h2>";
                    
//получаем список файлов
                    
$filelist scandir(".");
                }
                else
                {
                    echo 
"<h2>".$_GET['p']."</h2>";
                    
$dir=$_GET['p'];
                    
//получаем список файлов
                    
$filelist scandir("./".$_GET['p']);
                }
                
//выводим данные в виде таблицы
                //выводим заголовок таблицы
                
echo "<table>";
                echo 
'<tr class="header">';
                echo 
"<td>Имя</td>";
                echo 
"<td>Размер</td>";
                echo 
"<td>Тип файла</td>";
                echo 
"<td>Последнее изменение</td>";
                echo 
"<td>Удалить</td>";
                echo 
"</tr>";
                
$one=true;
                foreach(
$filelist as $file)
                {
                    
$query=$dir."/".$file;
                    
//получаем тип файла
                    
$type=filetype($query);
                    
//задаем стиль строки для облегчения восприятия
                    
if($one)
                    {
                        echo 
'<tr class="one">';
                    }
                    else
                    {
                        echo 
'<tr class="two">';
                    }
                    
$one=!$one;
                    if(
$type=="dir")
                    {
                        echo 
'<td><a href="'.$_SERVER['PHP_SELF'].'?do=browse&p='.$query.'" >'.$file.'</a></td>';                    
                    }
                    else
                    {
                        echo 
'<td><a href="'.$_SERVER['PHP_SELF'].'?do=fi&p='.$dir.'&name='.$file.'" >'.$file.'</a></td>';
                    }
                    
//выводим размер файла
                    
echo "<td>".filesize($query)."</td>";
                    echo 
"<td>".$type."</td>";
                    echo 
"<td>".date("d.m.Y G:i:s",filemtime($query))."</td>";
                    if(
$type=="file")
                    {
                        echo 
'<td><a href="'.$_SERVER['PHP_SELF'].'?do=delete_f&p='.$dir.'&name='.$file.'" >Удалить файл</a></td>';
                    }
                    elseif(
$type=="dir")
                    {
                        echo 
'<td><a href="'.$_SERVER['PHP_SELF'].'?do=delete_d&p='.$query.'" >Удалить папку</a></td>';                        
                    }
                    echo 
"</tr>";
                }
                echo 
"</table>";
                
//после таблицы мы выводим дополнительные инструменты
                //создание папки
                
echo '<p>';
                echo 
'Создание папки в текущей директории:<br />';
                echo 
'<form method="GET" >';
                echo 
'<input type="hidden" name="do" value="mkdir" />';
                echo 
'<input type="hidden" name="p" value="'.$dir.'" />';
                echo 
'<input type="text" name="name" value="Имя папки" />';
                echo 
'<input type="submit" name="submit" value="submit" />';
                echo 
'</form>';
                echo 
'<p>';
                
//загрузка файла
                
                
echo '<p>';
                echo 
'Загрузить файл';
                echo 
'<form method="POST" enctype="multipart/form-data" >';
                echo 
'<input type="hidden" name="do" value="upload" />';
                echo 
'<input type="hidden" name="p" value="'.$dir.'" />';
                echo 
'<input type="file" name="filename" /><br />';
                echo 
'<input type="submit" name="submit" value="Загрузить" />';
                echo 
'</form>';
            }
            
//информация о файле
            
elseif($_GET['do']=="fi")
            {
                
file_info();
            }
            
//удаление файла
            
elseif($_GET['do']=="delete_f")
            {
                
delete_file($_GET['p'],$_GET['name']);
            }
            
//удаление папки
            
elseif($_GET['do']=="delete_d")
            {
                
delete_dir($_GET['p']);
            }
            
//редактирование файла
            
elseif($_GET['do']=="edit")
            {
                
edit_file($_GET['p'],$_GET['name']);
            }
            elseif(
$_GET['do']=="mkdir")
            {
                
makedir($_GET['p'],$_GET['name']);
            }
        
?>
    </body>
</html>
Я долго отлаживал, но если остались баги-не судите строго
 
Ответить с цитированием