Функция за триене на папки и файлове.

Soul_Stealler

Registered
Опитвам се да създам функция която да трие дадена папка заедно със всички папки и файлове в нея. Проблема е обаче, че не съм много запознат как става този номер с функциите... :roll:
Ето до къде съм стигнал с функцията като гледам filemanager-a на staf.

Код:
function dirdelete($directory)
{
if (!is_dir($directory))
{
echo ("$directory | Директорията не съществува!");

}
if ($dir = opendir($directory))
{
while (($dirfile = readdir($dir)) !== false)
{
$path = $directory.'/'.$dirfile;
if (is_link($path) || $dirfile == '.' || $dirfile == '..')
{
continue;
}
if (is_file($path))
{
unlink ("$path");
}
if (is_dir($path))
{
$dirdel = dirdelete($path);


}
}
closedir($dir);

}
}

Проблема е че незнам къде да го пъхна unlink-a за папката ... :roll:
 

Admin

Registered
Преди да изтриеш папката ще трябва:
да изтриеш всички файлове и папки в нея.
Ама преди това трябва да си изтрил всички файлове в подпапките.
НЕзнма дали разбираш за какъв алгоритъм става въпрос.

Незнам дали няма да стане с някоя FTP-PHP функция .
Не съм се интересувал.Може и да може.
 

Soul_Stealler

Registered
Намерих една функция съвсем кратка :)
Код:
function remove_dir($dir)
{
	$handle = opendir($dir);
	while (false!==($item = readdir($handle)))
	{
		if($item != '.' && $item != '..')
		{
			if(is_dir($dir.'/'.$item)) 
			{
				remove_dir($dir.'/'.$item);
			}else{
				unlink($dir.'/'.$item);
			}
		}
	}
	closedir($handle);
	if(rmdir($dir))
	{
		$success = true;
	}
	return $success;
}
 

vesku

Registered
какво искаш да направиш?
ако сам те разбрал правилно питаш каде да сложиш линка за триене на папките с файловете в нея
 

vesku

Registered
тази бачка нз за парвата
Soul_Stealler
може ли да взема тази функцуя че ми трябва и на мен ?
 

Soul_Stealler

Registered
Трябваше ми функция която трие папките заедно с всичките неща в нея.
Но я намерих ... при това даже и работи ... направо съм в шок .... :shock: :lol: :lol:

Функцията е в горното ми мнение.

P.S. Взимай я :wink:
 

bafitu

Registered
сега и ако добавиш да проверява за chmod-а на който е папката/файла
и ако може да го промени ще стане супер :)
 

Soul_Stealler

Registered
Готово.
Ето урока с двете функции.
http://web-tourist.net/login/login/view.php?st=826
:)
thumbsup.gif
 

Soul_Stealler

Registered
Скоро и аз може да пусна един file manager, само че първо да ви питам има ли начин да се ограничи достъпа само към папки след root папката на скрипта ? :roll:
 

Admin

Registered
Soul_Stealler каза:
Скоро и аз може да пусна един file manager, само че първо да ви питам има ли начин да се ограничи достъпа само към папки след root папката на скрипта ? :roll:

Да може.
Задаваш път за тази папка и не разрешаваш да може да се работи с папки които са по нагоре в дървото.
Почни да го правиш и ще ти дам насоки.
 

Soul_Stealler

Registered
Малко се обърках... имах предвид папки преди root папката на скрипта :) . В сорса в момента имам променлива $root_dir (ако може да помогне с нещо... :roll: ). Ето кода за папките:

Код:
///////////////////////////////////////.::: CONFIG START:::. //////////////////////////////////////////////
$folders = "yes";  //////AKO NE ISKATE DA MOVE DA SE VLIZA V PAPKITE NAPISHETE "no"///////
$root_dir = "folder/"; ///NACHALNATA PAPKA SPQMO PAPKATA V KOQTO E SLOJEN SKRIPTA.///
///////////////////////////////////////.::: CONFIG END:::. ///////////////////////////////////////////////
$dir = $_GET['dir'];
if ( $folders == "no"){
$dir = "";
}
if ($dir != ""){
////////////////////////////
$path_opendir = $root_dir.$dir;
$path_rename = $root_dir.$dir."/";

////////////////////////////
} else {
$path = "";
if ($path == ""){
$path_opendir = $root_dir.".";
$path_rename = $root_dir;
} else {
$path_opendir = $root_dir.".";
$path_rename = $root_dir;
}
}
 

Soul_Stealler

Registered
Опитах се да направя да замества .. , . , ../ , но нещо не стана ... замества всичко. Ако има / в променливата го замества, макар и да не съм дал да го прави ... :shock:
 

Горе