Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Игнорируется подключение файла при помощи include() после рекурсивного удаления директории
 
 автор: Владимир55   (19.03.2007 в 13:30)   письмо автору
 
 

Нашел на форуме очень удобную функцию удаления папки вместе с файлами. Эта функция исполняется у меня на отдельном файле, где никаких других кодов нет. А завершиться исполнение кода на этой странице должно подключением другой страницы. В общем, на странице код такой:

$namefileogl = file_get_contents("namefileogl.txt"); // Получаем имя удаляемой директории

function DirDelete($dire)
{
if(is_dir($dire))
{
$dir = opendir($dire);
while (false !== ($filename = readdir($dir)))
{
if($filename!='.' && $filename!='..')
{
if(is_file($dire."/".$filename)) unlink($dire."/".$filename);
if(is_dir($dire."/".$filename)) DirDelete($dire."/".$filename);
}
}
closedir($dir);
rmdir($dire);
}
if(is_dir($dire)) echo "Произошли ошибки при удалении директории ".$dire."!";
}

DirDelete($namefileogl); // Здесь имя удаляемой директории.

echo "Работа выполнена!" ;
include "insert-f.php"; // Возвращение
echo "Код за инклудом" ;

Я ожидал при исполнении этой страницы получить сообщение "Работа выполнена" и увидеть дизайн страницы insert-f.php. Ан - нет, выводятся оба сообщения, а вот подключения страницы не происходит! Почему так, что за фокусы?

Для диагностики строку с инклудом заменил строкой
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=insert-f.php;'></HEAD></HTML>";

Теперь переход на insert-f.php выполняется нормально. Разумеется, я могу работать и так, но очень не люблю, когда в программе происходит что-то, чего я не понимаю. Ведь инклуд должен исполняться? Должен! Так почему не исполняется?

========
Добавление.
Как я сейчас выяснил, include "insert-f.php"; исполняется, если страницу с функцией перезапустить, то есть исполняется со второго раза, когда удаляемой папки уже нет. Видимо, в этом и причина. Но как же её устранить?

   
 
 автор: Владимир55   (20.03.2007 в 01:15)   письмо автору
 
   для: Владимир55   (19.03.2007 в 13:30)
 

Все ж таки было бы интересно решить этот вопрос!

   
 
 автор: cheops   (20.03.2007 в 03:24)   письмо автору
 
   для: Владимир55   (19.03.2007 в 13:30)
 

А что внутри файла insert-f.php находится?

   
 
 автор: Владимир55   (20.03.2007 в 12:47)   письмо автору
 
   для: cheops   (20.03.2007 в 03:24)
 

Там всего лишь форма ввода информации с клавиатуры. Но до перехода на этот файл дело не доходит - инклюд не выполняется, и на экране пустая страница.

Дело, конечно же, в функции удаления папки. Если её запустить, указав в адресе несуществующую папку, то инклюд исполняется.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования