| |
|
|
| | Нашел на форуме очень удобную функцию удаления папки вместе с файлами. Эта функция исполняется у меня на отдельном файле, где никаких других кодов нет. А завершиться исполнение кода на этой странице должно подключением другой страницы. В общем, на странице код такой:
$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
(19.03.2007 в 13:30)
| | | Все ж таки было бы интересно решить этот вопрос! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(19.03.2007 в 13:30)
| | | А что внутри файла insert-f.php находится? | |
| |
|
|
| |
|
|
| |
для: cheops
(20.03.2007 в 03:24)
| | | Там всего лишь форма ввода информации с клавиатуры. Но до перехода на этот файл дело не доходит - инклюд не выполняется, и на экране пустая страница.
Дело, конечно же, в функции удаления папки. Если её запустить, указав в адресе несуществующую папку, то инклюд исполняется. | |
| |
|
|