Webmaster общности: Predpriemach.com | SearchEngines.bg

    Файл Мениджър

    Автор: Lenin

    Това е един Файл Мениджър с който можете да редактирате, качвате файлове и да създавате нови папки. Няма защити с username или password. Демо ще кача утре сутринта, всичко е обяснено в коментарите по урока. Дано да ви е от полза. Урока е подготвен спецално за Web-Tourist и преписването му е забранено.

    <?php
    
    //проверяваме 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>";
    //получаваме списъка със файлове
    $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="Създай" />';
    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>