allora posta il codice...
allora posta il codice...
codice:<?php // copydirr.inc.php /* 26.07.2005 Author: Anton Makarenko makarenkoa at ukrpost dot net webmaster at eufimb dot edu dot ua */ function copydirr($fromDir,$toDir,$chmod=0757,$ve rbose=false) /* copies everything from directory $fromDir to directory $toDir and sets up files mode $chmod */ { //* Check for some errors $errors=array(); $messages=array(); if (!is_writable($toDir)) $errors[]='target '.$toDir.' is not writable'; if (!is_dir($toDir)) $errors[]='target '.$toDir.' is not a directory'; if (!is_dir($fromDir)) $errors[]='source '.$fromDir.' is not a directory'; if (!empty($errors)) { if ($verbose) foreach($errors as $err) echo 'Error: '.$err.' '; return false; } //*/ $exceptions=array('.','..'); //* Processing $handle=opendir($fromDir); while (false!==($item=readdir($handle))) if (!in_array($item,$exceptions)) { $from=str_replace('/cartellaa/','/',$fromDir.'/'.$item); $to=str_replace('/backup/','/',$toDir.'/'.$item); if (is_file($from)) { if (@copy($from,$to)) { chmod($to,$chmod); touch($to,filemtime($from)); // to track last modified time $messages[]='File copied from '.$from.' to '.$to; } else $errors[]='cannot copy file from '.$from.' to '.$to; } if (is_dir($from)) { if (@mkdir($to)) { chmod($to,$chmod); $messages[]='Directory created: '.$to; } else $errors[]='cannot create directory '.$to; copydirr($from,$to,$chmod,$verbose); } } closedir($handle); //*/ //* Output if ($verbose) { foreach($errors as $err) echo 'Error: '.$err.' '; foreach($messages as $msg) echo $msg.' '; } //*/ return true; } /* sample usage: WARNING: if You set wrong $chmod then You'll not be able to access files and directories in destination directory. For example: once upon a time I've called the function with parameters: copydir($fromDir,$toDir,true); What happened? I've forgotten one parameter (chmod) What happened next? Those files and directories became inaccessible for me (they had mode 0001), so I had to ask sysadmin to delete them from root account Be careful :-) <?php require('./copydirr.inc.php'); copydirr('./testSRC','D:/srv/Apache2/htdocs/testDEST',0777,true); ?> */ ?>
prova questa l'ho scritta io per usarla fai:Codice PHP:<?php
function copia_cartella($source, $dest, $messages_reporting=false, $error_reporting=false) {
if($error_reporting) $errors = array();
if($messages_reporting) $msgs = array();
if(!is_dir($source)) {
if($error_reporting) $errors[] = "Impossibile copiare la directory $source perchè non esiste.";
if($messages_reporting) $messages[] = "La procedura di copia è stata interrotta poichè la directory $source non esiste.";
return false;
}
if(!mkdir($dest)) {
if($error_reporting) $errors[] = "Impossibile creare la directory di destinazione $dest";
if($messages_reporting) $messages[] = "La directory $dest non è stata creata a causa di problemi. La procedura di copia verrà interrotta.";
return false;
}else{ if($messages_reporting) $messages[] = "La cartella di destinazione $dest è stata creata. La procedura di copia verrà avviata."; }
if(!$handle = opendir($source)) {
if($error_reporting) $errors[] = "Impossibile aprire la directory $source.";
if($messages_reporting) $messages[] = "La cartella $source non è leggibile, la procedura di copia verrà interrotta.";
return false;
}else{
$source = (substr($source, -1, 1) != "/") ? $source : (substr($source, 0, strlen($source) - 1));
$dest = (substr($dest, -1, 1) != "/") ? $dest : (substr($dest, 0, strlen($dest) - 1));
while($file = readdir($handle)) {
if($file != "." && $file != "..") {
if(!is_readable($source . "/" . $file)) {
if($error_reporting) $errors[] = "Il file $file non è leggibile e non verrà copiato.";
if($messages_reporting) $messages[] = "Il file $file non è leggibile e non verrà copiato.";
continue;
}
if(!copy($source . "/" . $file, $dest . "/" . $file)) {
if($error_reporting) $errors[] = "Il file $file non è stato copiato.";
if($messages_reporting) $messages[] = "Il file $file non è stato copiato a causa di problemi.";
continue;
}
if($messages_reporting) $messages[] = "Il file $file è stato copiato.";
}
}
}
if($error_reporting) {
foreach($errors as $error) {
echo "[b]<font color=\"red\">ERRORE:</font>[/b] ".$error."
\n";
}
}
if($messages_reporting) {
foreach($messages as $message) {
echo "[b]<font color=\"black\">MESSAGGIO:</font>[/b] ".$error."
\n";
}
}
return true;
}
?>
se vuoi i messaggi:
copia_cartella("ciao/", "caio/", true);
se vuoi i messaggi e gli errori:
copia_cartella("ciao/", "caio/", true, true);
se vuoi gli errori ma non i messaggi:
copia_cartella("ciao/", "caio/", false, true);
se non vuoi errori a video:
copia_cartella("ciao/", "caio/");
attenzione: non mettere mai nella funzione ./ .
dimmi se va, non l'ho neanche testata.
Mi sembra un pttimo script! Migliore degli altri due postati sicuramente! Ottimo lavoro php_34! Bisogna solo vedere se funziona e se hai fatto centro al primo colpo!![]()
![]()
eCommerceRS.NET - Commerciante, vendi on-line!
Il mio nick è mircov e non mirco!!!
funziona ma non copia le sottodirectory e me li fa a file di testo(
lo so ho dimenticato di dirteloscusa non copia le directory, non potresti cercare di non crearne?
Io adesso ti posto un codice, c'è una parte che è una pazzia, non so se funziona..proviamo:
ecco prova questo.Codice PHP:<?php
function copia_cartella($source, $dest, $messages_reporting=false, $error_reporting=false) {
if($error_reporting) $errors = array();
if($messages_reporting) $msgs = array();
if(!is_dir($source)) {
if($error_reporting) $errors[] = "Impossibile copiare la directory $source perchè non esiste.";
if($messages_reporting) $messages[] = "La procedura di copia è stata interrotta poichè la directory $source non esiste.";
return false;
}
if(!mkdir($dest)) {
if($error_reporting) $errors[] = "Impossibile creare la directory di destinazione $dest";
if($messages_reporting) $messages[] = "La directory $dest non è stata creata a causa di problemi. La procedura di copia verrà interrotta.";
return false;
exit;
}else{ if($messages_reporting) $messages[] = "La cartella di destinazione $dest è stata creata. La procedura di copia verrà avviata."; }
if(!$handle = opendir($source)) {
if($error_reporting) $errors[] = "Impossibile aprire la directory $source.";
if($messages_reporting) $messages[] = "La cartella $source non è leggibile, la procedura di copia verrà interrotta.";
return false;
exit;
}else{
$source = (substr($source, -1, 1) != "/") ? $source : (substr($source, 0, strlen($source) - 1));
$dest = (substr($dest, -1, 1) != "/") ? $dest : (substr($dest, 0, strlen($dest) - 1));
while($file = readdir($handle)) {
if($file != "." && $file != "..") {
if(is_dir) {
if(@mkdir($source . "/" . $file)) {
if($messages_reporting) $messages[] = "La sottocartella $file è stata creata.";
copia_cartella($source . "/" . $file, $dest . "/" . $file, $messages_reporting, $error_reporting);
}else{
if($messages_reporting) $messages[] = "La sottocartella $file non è stata creata.";
if($error_reporting) $errors[] = "La sottocartella $file non è stata creata.";
continue;
}
}
if(is_file($source . "/" . $file)) {
if(!is_readable($source . "/" . $file)) {
if($error_reporting) $errors[] = "Il file $file non è leggibile e non verrà copiato.";
if($messages_reporting) $messages[] = "Il file $file non è leggibile e non verrà copiato.";
continue;
}
if(@copy($source . "/" . $file, $dest . "/" . $file)) {
if($messages_reporting) $messages[] = "Il file $file è stato copiato.";
}else{
if($error_reporting) $errors[] = "Il file $file non è stato copiato.";
if($messages_reporting) $messages[] = "Il file $file non è stato copiato a causa di problemi.";
continue;
} }
}
}
}
if($error_reporting) {
foreach($errors as $error) {
echo "[b]<font color=\"red\">ERRORE:</font>[/b] ".$error."
\n";
}
}
if($messages_reporting) {
foreach($messages as $message) {
echo "[b]<font color=\"black\">MESSAGGIO:</font>[/b] ".$error."
\n";
}
}
return true;
}
?>
@mirkov: GRAZIE molto gentile (a differenza di altri...)
ok provo (ps: si aziona come prima?)
glab....questa ha solo creato la cartella..e non ha messo nessun file....
MESSAGGIO: La sottocartella prova.php non è stata creata.
non è una sub....
calma calma calma allora abilita gli errori e i messaggi e dimmi cosa esce...avevo detto che era una pazziaOriginariamente inviato da kikkolino
glab....questa ha solo creato la cartella..e non ha messo nessun file....
MESSAGGIO: La sottocartella prova.php non è stata creata.
non è una sub....
prova questo, altra pazzia ma dovrebbe andare:
dimmi ora..Codice PHP:<?php
function copia_cartella($source, $dest, $messages_reporting=false, $error_reporting=false) {
if(!is_dir($source)) {
if($error_reporting) $errors[] = "Impossibile copiare la directory $source perchè non esiste.";
if($messages_reporting) $messages[] = "La procedura di copia è stata interrotta poichè la directory $source non esiste.";
return false;
exit;
}
if(!mkdir($dest)) {
if($error_reporting) $errors[] = "Impossibile creare la directory di destinazione $dest";
if($messages_reporting) $messages[] = "La directory $dest non è stata creata a causa di problemi. La procedura di copia verrà interrotta.";
return false;
exit;
}else{ if($messages_reporting) $messages[] = "La cartella di destinazione $dest è stata creata. La procedura di copia verrà avviata."; }
if(!$handle = opendir($source)) {
if($error_reporting) $errors[] = "Impossibile aprire la directory $source.";
if($messages_reporting) $messages[] = "La cartella $source non è leggibile, la procedura di copia verrà interrotta.";
return false;
exit;
}else{
$source = (substr($source, -1, 1) != "/") ? $source : (substr($source, 0, strlen($source) - 1));
$dest = (substr($dest, -1, 1) != "/") ? $dest : (substr($dest, 0, strlen($dest) - 1));
while($file = readdir($handle)) {
if($file != "." && $file != "..") {
if(is_dir) {
if(@mkdir($dest . "/" . $file)) {
if($messages_reporting) $messages[] = "La sottocartella $file è stata creata.";
copia_cartella($source . "/" . $file, $dest . "/" . $file, $messages_reporting, $error_reporting);
}else{
if($messages_reporting) $messages[] = "La sottocartella $file non è stata creata.";
if($error_reporting) $errors[] = "La sottocartella $file non è stata creata.";
continue;
}
}
if(is_file($source . "/" . $file)) {
if(!is_readable($source . "/" . $file)) {
if($error_reporting) $errors[] = "Il file $file non è leggibile e non verrà copiato.";
if($messages_reporting) $messages[] = "Il file $file non è leggibile e non verrà copiato.";
continue;
}
if(@copy($source . "/" . $file, $dest . "/" . $file)) {
if($messages_reporting) $messages[] = "Il file $file è stato copiato con successo.";
}else{
if($error_reporting) $errors[] = "Il file $file non è stato copiato.";
if($messages_reporting) $messages[] = "Il file $file non è stato copiato a causa di problemi.";
continue;
} }
}
}
closedir($handle);
}
if($error_reporting && isset($errors)) {
foreach($errors as $error) {
echo "[b]<font color=\"red\">ERRORE:</font>[/b] ".$error."
\n";
}
}
if($messages_reporting && isset($messages)) {
foreach($messages as $message) {
echo "[b]<font color=\"black\">MESSAGGIO:</font>[/b] ".$error."
\n";
}
}
return true;
}
?>