[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: hx  
Форум » Смежные проекты » hx Software » PHP - Простейший файл-менеджер
PHP - Простейший файл-менеджер
hxДата: Четверг, 12.11.2009, 10:46 | Сообщение # 1
UCTeam Pro Coder
Сообщений: 482
Репутация: 34
Замечания: 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.: статья и код полностью написаны мной. Копирование статьи разрешено только с указанием автора, использование кода свободно.

 
AdminДата: Четверг, 12.11.2009, 14:23 | Сообщение # 2
Сообщений: 3946
Репутация: 86
Статус: Вне игры
Я все равно по-своему буду делать smile

Motorola T190 -> LG B1300 -> Siemens C72 -> Nokia 3500 -> Nokia E65 -> Huawei U8860 -> Huawei H60-L02
 
hxДата: Четверг, 12.11.2009, 15:22 | Сообщение # 3
UCTeam Pro Coder
Сообщений: 482
Репутация: 34
Замечания: 0%
Статус: Вне игры
Делай как хочешь, я ж не заставляю
 
z-kzn-zДата: Четверг, 12.11.2009, 17:07 | Сообщение # 4
Master Z
Сообщений: 160
Репутация: 49
Замечания: 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...
 
AdminДата: Четверг, 12.11.2009, 17:45 | Сообщение # 5
Сообщений: 3946
Репутация: 86
Статус: Вне игры
Доо, его ещё надо в кошерный вид приводить

Motorola T190 -> LG B1300 -> Siemens C72 -> Nokia 3500 -> Nokia E65 -> Huawei U8860 -> Huawei H60-L02
 
hxДата: Четверг, 12.11.2009, 18:25 | Сообщение # 6
UCTeam Pro Coder
Сообщений: 482
Репутация: 34
Замечания: 0%
Статус: Вне игры
z-kzn-z, код отформатировал более-менее.
 
z-kzn-zДата: Четверг, 12.11.2009, 20:00 | Сообщение # 7
Master Z
Сообщений: 160
Репутация: 49
Замечания: 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, 20:00
 
hxДата: Пятница, 13.11.2009, 10:07 | Сообщение # 8
UCTeam Pro Coder
Сообщений: 482
Репутация: 34
Замечания: 0%
Статус: Вне игры
Сделал htmlspecialchars(), хотя лучше обрабатывать функцией antihack отсюда
 
Форум » Смежные проекты » hx Software » PHP - Простейший файл-менеджер
  • Страница 1 из 1
  • 1
Поиск:

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


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



Меню


Статистика



© Dinedi.RU, 2007-2024 || Хостинг от uCoz