| 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
Статус: Вне игры
| Я все равно по-своему буду делать
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 отсюда
|
| |
| |
|
|