Часть 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.: статья и код полностью написаны мной. Копирование статьи разрешено только с указанием автора, использование кода свободно.