duminică, 18 decembrie 2011

Structura unui folder, creare, stergere folder, copiere structura in php

Modificand la scriptul de inregistrare pentru redirecte a trebuit sa fac niste mici functii in php cu ajutorul carora veti putea copia un folder, afla structura unui fisier, sterge un fisier, etc.

De specificat este ca atunci cand se creeaza un folder cu mkdir, chiar daca este setat accesul pe 777 acesta nu poate fi sters din FTP. Asa ca trebuie implementata o functie recursiva pentru a-l sterge.

function getDirectory($path){

    $a=0;
    $folders = array($path);
    $folders2 = array("");
   
    // Open the directory to the handle $dh
   
    while($a<count($folders))
    {
 


   
    $files = scandir($folders[$a]);

    for($i=2;$i<count($files);$i++)
    {
    $str = $files[$i];
    if(is_dir($folders[$a]."/".$str))
    {
    array_push($folders,$folders[$a]."/".$str);
    array_push($folders2,$folders2[$a]."/".$str);
    //echo     $folders[$a]."/".$str."</br>";
    }
    }
    $a++;
   
    }
  
return $folders2;
   
}

Exemplu: getDirectory("./test"); - Returneaza structura folderului, "./" tine loc de folder actual. Diferenta dintre arrayul folders si folder2. folders2 returneaza folderele din interior.
Exemplu:
/subdir
/subdir2
/subdir2/etc

folders returneaza inclusiv folderul interogat:

test/subdir
test/subdir2
test/subdir2/etc

function delete($path){

$array = getDirectory($path);
for($i=count($array)-1;$i>=0;$i--)
{
$files = scandir($path.$array[$i]);
foreach($files as $s)
{
if(!is_dir($path.$array[$i]."/".$s)){
echo $path.$array[$i]."/".$s."</br>";
unlink($path.$array[$i]."/".$s);}
}

rmdir($path.$array[$i]);
}


Sterge toate fisierele si folderele in mod recursiv. Se sterge si pe el insusi.

 function makeDirs($string1,$array)
{

foreach($array as $path)
{
mkdir($string1.$path,0777,true);
}

}


Creaza folderele array in folderul $string1

Urmatoarea functie copiaza un folder intreg(fisierele). Atentie! Trebuie sa aiba aceasi structura. 
function copyFiles($path)
{

$array = getDirectory("folder_sursa");
foreach($array as $f)
{
$s = "folder_sursa".$f;
$files = scandir($s);
foreach($files as $fl)
{
if(!is_dir($s."/".$fl))
copy($s."/".$fl,"./".$path.$f."/".$fl);
//echo $s."/".$fl."     "."./".$path.$f."/".$fl."</br>";
}

}

}

Niciun comentariu:

Trimiteți un comentariu