Удаление каталога/папки с содержимым

547
.
Vynderkind (02.04.2012/23:54)
[оффтоп]
я не могу не кинуть ссылку
http://forum.php.su/topic.php? ... =4778
[/оффтоп]
.
Люди помогите пожалуйста вот весть код как мне сделать чтобы не сносило полностью папку user а только нужную в ней ?
function rdir($dir) {
if ($handle=opendir($dir)) {
while (($file=readdir($handle))<>false) {
if (is_file($dir."/".$file)) {
chmod($dir."/".$file,0777); unlink($dir."/".$file);
}
elseif (is_dir($dir."/".$file)&&($file<>".")&&($file<>".."))
{ chmod($dir."/".$file,0777);
rdir($dir."/".$file); }
} closedir($handle);
chmod($dir,0777);
if (rmdir($dir)) {return true;} else {return false;}
}
}
if (!empty ($_GET['name'])){
$name = ($_POST['name']);
if (file_exists("../images/smileys/user/$name")){
$dir='../images/smileys/user/' . $name;
rdir($dir);
if (!file_exists("../images/smileys/user/$name")){
echo '<div class=b><b><p align="center">Папка успешно удалена</p></b></div>';
}else{
echo '<div class = rmenu><p align="center">Не удалось удалить папку</p></div>'; }
} }else{
echo '<div class = rmenu><p align="center">Папка не найдена !</p></div>'; }
.
(\/)____o_O____(\/)
Fenix_61, Добавь в функцию global $name; и определяй эту переменную перед вызовом функции
.
Koenig (12.04.2012/15:25)
Fenix_61, Добавь в функцию global $name; и определяй эту переменную перед вызовом функции
Так
function rdir($dir) {
global $name = $name;
if ($handle=opendir($dir)) {
while (($file=readdir($handle))<>false) {
if (is_file($dir."/".$file)) {
chmod($dir."/".$file,0777); unlink($dir."/".$file);
}
elseif (is_dir($dir."/".$file)&&($file<>".")&&($file<>".."))
{ chmod($dir."/".$file,0777);
rdir($dir."/".$file); }
} closedir($handle);
chmod($dir,0777);
if (rmdir($dir)) {return true;} else {return false;}
}
}
if (!empty ($_GET['name'])){
global $name = ($_POST['name']);
if (file_exists("../images/smileys/user/$name")){
$dir='../images/smileys/user/' . $name;
rdir($dir);
if (!file_exists("../images/smileys/user/$name")){
echo '<div class=b><b><p align="center">Папка успешно удалена</p></b></div>';
}else{
echo '<div class = rmenu><p align="center">Не удалось удалить папку</p></div>'; }
} }else{
echo '<div class = rmenu><p align="center">Папка не найдена !</p></div>'; }
или как ? Можешь показать на моем куске кода ?
.
(\/)____o_O____(\/)
Fenix_61, Не проще ли передавать в функцию сразу папку? Я тебе вначале темы писал пример, и даже дал ссылку на функцию , сам писал , уверен в ней.
function rdir($dir) {
#global $name;
if ($handle=opendir($dir)) {
while (($file=readdir($handle))!==false) {
if (is_file($dir . '/'. $file)) {
chmod($dir . '/' . $file, 0777); unlink($dir . '/' . $file);
}
elseif (is_dir($dir . '/' . $file) && ($file!='.') && ($file!='..'))
{ chmod($dir . '/' . $file, 0777);
rdir($dir . '/' . $file); 
}
} closedir($handle);
chmod($dir, 0777);
if (rmdir($dir)) {
return true;
} else {
return false;
}
}
}

if (!empty ($_GET['name'])){
$name = ($_POST['name']);
if (file_exists('../images/smileys/user/' . $name)) {
$dir = '../images/smileys/user/' . $name;
rdir($dir);
if (!file_exists('../images/smileys/user/' . $name)) {
echo '<div class=b><b><p align="center">Папка успешно удалена</p></b></div>';
} else {
echo '<div class = rmenu><p align="center">Не удалось удалить папку</p></div>'; 
}
}
} else {
echo '<div class = rmenu><p align="center">Папка не найдена !</p></div>'; 
}

С тела, не проверял, по сути там и не нужна эта переменная
.
(\/)____o_O____(\/)
Fenix_61, А... Проверка папки через file_exists поменять на is_dir
.
Fenix_61
Koenig (12.04.2012/16:53)
Fenix_61, Не проще ли передавать в функцию сразу папку? Я тебе вначале темы писал пример, и даже дал ссылку на функцию , сам писал , уверен в ней.
[php] function rdir($dir) {
#global $name;
if ($
Спасибо большое все работает !
.
Vynderkind, Убил
.
SlyDeath (03.05.2012/05:51)
Vynderkind, Убил
Не флуди!
.
Подробно и с комментариями
<?php
	$path = "../gallery/";//Удалим папку gallery и всё содержимое
	function RemoveDir($path) {//Функция рекурсивного удаления
		if (file_exists($path) && is_dir($path)) {//Проверяем существует ли папка и папка ли это вообще
			$dirHandle = opendir($path);//Заходим в папку
			while (false !== ($file = readdir($dirHandle))) {//По циклу пока есть что-то внутри берём это
				if ($file != '.' && $file != '..') {//Исключаем папки поднятия вверх на каталог
					$tmpPath = $path . '/' . $file;//Сохраняем путь к файлу/папке
					@chmod($tmpPath, 0777);//Ставим чмод который позволит нам делать всё

					if (is_dir($tmpPath)) {//Проверяем точно ли это папка?
						RemoveDir($tmpPath);//Запускаем нашу функцию нова
					} else {//Если это файл
						if (file_exists($tmpPath)) {//Проверяем файл ли это?
							unlink($tmpPath);//Это файл! Удаляем его!
						}
					}
				}
			}
			closedir($dirHandle);//Выходим из папки
			if (file_exists($path)) {//Проверка существует ли ещё наша папка?
                            rmdir($path);//Удаляем нафег
                            echo 'Папка и всё содержимое успешно удалено!';
			}
		} else {
			echo 'Удаляемой папки не существует или это файл!';
		}
	}
?>
Всего: 21