PHP - Простейший файл-менеджер - Форум - Dinedi.RU — всё о Gravity Defied

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: hx 
Форум » Dinedi.RU и совместные проекты » hx Software » PHP - Простейший файл-менеджер
PHP - Простейший файл-менеджер
hxДата: Четверг, 12.11.2009, 12:46 | Сообщение # 1
UCTeam Pro Coder
Группа: Проверенные
Сообщений: 482
Награды: 8
Репутация: 38
Замечания: 0%
Статус: Вне игры
Часть 1.
Code
<?php
if($_GET['dir']==''&&$_GET['file']==''){$_GET['dir']='.';}
if($_GET['dir']!=''){
    $dh = opendir($_GET['dir']);
    while($filename = readdir($dh)){
      if(is_file($_GET['dir'].'/'.$filename)){
        echo '<a href="fm.php?file='.$_GET['dir'].'/'.$filename.'">'.$filename.'</
a><br>';}else{
        if($filename!='.'){
          echo '<a href="fm.php?dir='.$_GET['dir'].'/'.$filename.'">'.$filename.'/</a><br>';}}}}else
if($_GET['file']!=''){
    if(file_exists($_GET['file'])){
      $ftx=file_get_contents($_GET['file']);
      $ftx=str_replace('</textarea>', '</textarea>', $ftx);
    }else{$ftx="File doesn't exists!";}
    echo '<textarea rows=25 cols=100>'.htmlspecialchars($ftx).'</textarea>';}
?>

Перед вами код простейшего файл-менеджера. Он умеет удобно "ходить" по папкам и смотреть текстовые файлы.
Рассмотрим его код подробнее.
Code
if($_GET['dir']==''&&$_GET['file']==''){$_GET['dir']='.';}

Здесь мы обрабатываем случай, когда нет параметров вызова файла. В этом случае он открывает текущий каталог (.).
Code
if($_GET['dir']!=''){
$dh = opendir($_GET['dir']);

Здесь мы узнаём, что включён режим просмотра папок (а не файлов) и открываем нужную папку.
Code
while($filename = readdir($dh))

Запускаем цикл чтения имён файлов.
Code
{if(is_file($_GET['dir'].'/'.$filename)){
echo '<a href="fm.php?file='.$_GET['dir'].'/'.$filename.'">'.$filename.'</a><br>';}else{
if($filename!='.'){
echo '<a href="fm.php?dir='.$_GET['dir'].'/'.$filename.'">'.$filename.'/</a><br>';}}}}

Проверяем, файл это или каталог. Если файл, выводим ссылку для просмотрщика, если папка и её имя не . (не текущая), добавляем к имени слэш и выводим ссылку для открытия.
Code
else
if($_GET['file']!=''){
if(file_exists($_GET['file'])){

Иначе если включён режим просмотра текстового файла, проверяем его существование.
Code
$ftx=file_get_contents($_GET['file']);
$ftx=str_replace('</textarea>', '</textarea>', $ftx);
}else{$ftx="File doesn't exists!";}
echo '<textarea rows=25 cols=100>'.$ftx.'</textarea>';}

Получаем его содержимое, в нём меняем завершающий тег поля текста на его видимый эквивалент, если файла не существует вместо текст файла заменяем текстом "File doesn't exists!".
Code
echo '<textarea rows=25 cols=100>'.$ftx.'</textarea>';}

И выводим результат в большом текстовом поле.

Вот и всё! Более сложные операции в файл-менеджере будут рассмотрены позже.

Добавлено (12.11.2009, 12:46)
---------------------------------------------
P.S.: статья и код полностью написаны мной. Копирование статьи разрешено только с указанием автора, использование кода свободно.

 
ShevronДата: Четверг, 12.11.2009, 16:23 | Сообщение # 2

Группа: Администраторы
Сообщений: 3226
Награды: 29
Репутация: 83
Статус: Вне игры
Я все равно по-своему буду делать smile

Motorola T190 -> LG 1300 -> Siemens C72 -> Nokia 3500 -> Nokia E65 -> Huawei U8860
 
hxДата: Четверг, 12.11.2009, 17:22 | Сообщение # 3
UCTeam Pro Coder
Группа: Проверенные
Сообщений: 482
Награды: 8
Репутация: 38
Замечания: 0%
Статус: Вне игры
Делай как хочешь, я ж не заставляю
 
z-kzn-zДата: Четверг, 12.11.2009, 19:07 | Сообщение # 4
Master Z
Группа: Проверенные
Сообщений: 160
Награды: 6
Репутация: 71
Замечания: 0%
Статус: Вне игры
hx, ты молодец, но... форматирование кода ужасное) его же читать неудобно, нафига так писать)

Добавлено (12.11.2009, 19:07)
---------------------------------------------
и еще, когда выводишь чтото из файла на страницу (или название файла/папки), выводи, обработав функцией htmlspecialchars()


Everything will slip away,
Shattered peaces will remain
When memories fade into emptiness.
Only time will tell its tale
If it all has been in vain...
 
ShevronДата: Четверг, 12.11.2009, 19:45 | Сообщение # 5

Группа: Администраторы
Сообщений: 3226
Награды: 29
Репутация: 83
Статус: Вне игры
Доо, его ещё надо в кошерный вид приводить

Motorola T190 -> LG 1300 -> Siemens C72 -> Nokia 3500 -> Nokia E65 -> Huawei U8860
 
hxДата: Четверг, 12.11.2009, 20:25 | Сообщение # 6
UCTeam Pro Coder
Группа: Проверенные
Сообщений: 482
Награды: 8
Репутация: 38
Замечания: 0%
Статус: Вне игры
z-kzn-z, код отформатировал более-менее.
 
z-kzn-zДата: Четверг, 12.11.2009, 22:00 | Сообщение # 7
Master Z
Группа: Проверенные
Сообщений: 160
Награды: 6
Репутация: 71
Замечания: 0%
Статус: Вне игры
ну более менее да.
про htmlspecialchars() не забывай.
объясню зачем.
например в файле, или в имени, содержится тег. вот просто <b>.
тогда браузер, если ты просто так это выведешь, и воспримет это как тег, а не как текст, и насчет писать жирным.
а htmlspecialchars() преобразует такие символы в html-сущности, и все выведется как текст

Everything will slip away,
Shattered peaces will remain
When memories fade into emptiness.
Only time will tell its tale
If it all has been in vain...


Сообщение отредактировал z-kzn-z - Четверг, 12.11.2009, 22:00
 
hxДата: Пятница, 13.11.2009, 12:07 | Сообщение # 8
UCTeam Pro Coder
Группа: Проверенные
Сообщений: 482
Награды: 8
Репутация: 38
Замечания: 0%
Статус: Вне игры
Сделал htmlspecialchars(), хотя лучше обрабатывать функцией antihack отсюда
 
Форум » Dinedi.RU и совместные проекты » hx Software » PHP - Простейший файл-менеджер
Страница 1 из 11
Поиск:

Приветствуем, Гость


Гость, предлагаем тебе авторизироваться:
Логин:
Пароль:

Для безопасной авторизации советуем воспользоваться панелью управления uNet

При проблемах с авторизацией жми сюда

Меню



Считаем до FF
(by Darkscape) [Игры на форуме]

Досчитай до 3000
(by Darkscape) [Игры на форуме]

Skype на мобилу
(by Darkscape) [Прочие JAVA игры и приложения]

Gravty Defied Free (Android)
(by Shevron) [Моды Gravity Defied]

Survarium
(by Darkscape) [Игры]

Общение
(by luethus) [Беседка]

НАГЛЫЙ ФЛУД
(by Shevron) [Беседка]


Статистика

Rambler's Top100 Информер ТИЦ Яндекс.Метрика GDTop


12
Copyright by Dinedi.RU © 2007-2012 || Protected by Copyscape Duplicate Content Detection Software || Создать сайт бесплатно