|
|
|
|
|
для: Hatred
(07.11.2006 в 23:50)
| | Указанный набор файлов лежит у Вас в каталогах
C:/Webservers
C:/Webservers/etc
C:/Webservers/etc/scripts
C:/Webservers/etc/scripts/init.d
|
Рекурсия не работает потому, что на каждом шагу Вы изменяете общую переменную $this->dOpen | |
|
|
|
|
|
|
|
для: cheops
(07.11.2006 в 22:50)
| | У меня стоит набор "Денвер". Установлен он в каталог по умолчанию - "C:/Webservers". Когда ввожу этот путь, например, то получаю следующее:
.
..
.
..
CONFIGURATION.txt
README.txt
Restart.exe
Run.exe
.
..
Control.bat
Control.pl
.
..
apache.pl
hosts.pl
mysql.pl
vdisk.pl
_stub.pl
|
Это не состав этой директории с поддиректориями. "Эхал" по-разному и пришёл к выводу, что криво работает рекурсия. $path в функциях изменяется, похоже.
Так же не работает вот эта строчка, точнее её часть:
if(is_dir($path)&&(isset($_POST['action']))) //Не работает проверка isset
То есть если пользователь ни разу не сабмитил форму, то скрипт не будет запускаться. Всё элементарно, но не работает. Много раз использоват такой приём в других приложениях, но тут что-то не соображу.
Я переработал пример, приведённый в Вашей книге. Просто использовал класс для тренировки работы с классами; ну, и исключение засунул дял тех же целей. | |
|
|
|
|
|
|
|
для: Hatred
(07.11.2006 в 19:18)
| | А в чём "не работа" заключается? (Запустил на локальной машине - работает). | |
|
|
|
|
|
|
| В общем, скрипт должен выводить все содержимое вводимого каталога. А не хочет.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Тест</title>
</head>
<body>
<h2><center>Список файлов</center></h2>
<hr>
<form method="post">
<input name="path_" size="150" maxlength="150">
<input type="submit" value="Отправить">
<input type="hidden" name="action" value="1">
</form>
<?
class PrintFiles
{
private $dOpen;
private $countDirs=array();
function consrtuct($path)
{ if(isset($_POST['action'])) echo("Ok!");
if(is_dir($path)&&(isset($_POST['action']))) //Не работает проверка isset
{
$this->readDirect($path);
}
else
{
throw new Exception("<h3>Ошибка открытия каталога</h3>",1);
}
}
function readDirect($path)
{
$this->dOpen=openDir($path);
while($this->current=readDir($this->dOpen))
{
if(is_dir($path."/".$this->current)&&($this->current!=".")
&&($this->current!=".."))
{
$this->readDirect($path."/".$this->current);
}
else
{
$this->countDirs[]=$this->current;
}
}
}
function mainAction()
{
foreach($this->countDirs as $this->key)
{
echo($this->key."<br>");
}
}
function __destruct()
{
closeDir($this->dOpen);
}
}
try
{
$obj=new PrintFiles();
$obj->consrtuct($_POST['path_']);
$obj->mainAction();
}
catch(Exception $e)
{
echo("Исключение: ".$e->getCode()."<br>");
echo($e->getMessage());
}
?>
</body>
</html>
|
Код простой, но никак не могу понять, в чём дело. | |
|
|
|
|