Copier coller d'un répertoire

cs_Burnside Messages postés 1132 Date d'inscription mercredi 28 août 2002 Statut Membre Dernière intervention 6 mars 2020 - 10 oct. 2007 à 15:19
cs_Burnside Messages postés 1132 Date d'inscription mercredi 28 août 2002 Statut Membre Dernière intervention 6 mars 2020 - 11 oct. 2007 à 11:31
Bonjour,

Je suis occupé à créér un script qui grace un un form va créer le repertoire voulu par l'utilisateur et ensuite copier le contenu d'un répertoire dans ce fameux répertoire de l'utilisateur.

J'ai un form on rentre Burnside il me crée bien le repertoire Burnside, le problème c'est la copie des fichiers d'un repertoire vers ce répertoire...

J'utilise ce script : http://www.phpcs.com/codes/COPIER-REPERTOIRE-TOUT-QU-CONTIENT_33553.aspx
et à la fin il demande deux repertoires 
copier_rep ($repertoire, 'source');

Mon souhait n'est pas de copier le répertoire source dans burnside mais uniquement les repertoires et fichiers contenenu dans source.

./Source/admin/
./Source/sql.txt

./Burnside/Source/admin/
./Burnside/Source/sql.txt

je souhaite :
./Burnside/admin
./Burnside/sql.tx

Que dois-je modifier?

Bàv,
Burnside.
..:: Enjoy living in hell ::..
http://www.art-line.be

2 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 oct. 2007 à 23:04
Hello,

fais voir ton code. C'est juste un problème de chemin.
0
cs_Burnside Messages postés 1132 Date d'inscription mercredi 28 août 2002 Statut Membre Dernière intervention 6 mars 2020
11 oct. 2007 à 11:31
function MakeDir($dir)
      {
      // On vérifie qu'il y ait bien un dossier      if (($dir '') or ($dir '/') or (is_dir($dir))) {
      return 0;
      }
      // Si c'est un dossier simple on le crée
      if (strrpos($dir, '/') == false) {
      mkdir($dir);
      return 0;
      }
      $pos_ini = 0;
      $dir_depart = '';
      while($dir) {
      // Trouve le dossier au début de $dir
      $dossier = '';
      $pos_ini = 0;
      $t = $pos_ini;
      while((strrpos($dossier, '/') == false) and ($t <= strlen($dir))) {
      $t += 1;
      $dossier = substr($dir, $pos_ini, $t);
      }
      if (!is_dir($dir_depart . $dossier)) {
      mkdir($dir_depart . $dossier);
      }
      $dir = substr($dir, $t, strlen($dir));
      $dir_depart .= $dossier;
      }
      }
     
     
      function create_tab ($dir) { // fonction creant le tableau contenant les repertoires et fichiers
  $dir = rtrim ($dir, '/'); // on vire un eventuel slash mis par l'utilisateur de la fonction a droite du repertoire
  if (is_dir ($dir)) // si c'est un repertoire
  $dh = opendir ($dir); // on l'ouvre
  else {
  echo $dir, ' n\'est pas un repertoire valide'; // sinon on sort! Appel de fonction non valide
  exit;
  }
  while (($file = readdir ($dh)) !== false ) { //boucle pour parcourir le repertoire
  if ($file !== '.' && $file !== '..') { // no comment
  $path =$dir.'/'.$file; // construction d'un joli chemin...
  if (is_dir ($path)) { //si on tombe sur un sous-repertoire
  $tableau[$dir]['dir'][] = $path;
  $tabTmp = create_tab ($path); // appel recursif pour lire a l'interieur de ce sous-repertoire
  if (is_array ($tabTmp) && is_array ($tableau))
  $tableau = array_merge ($tableau, $tabTmp);
  }
  else
  $tableau[$dir]['file'][] = $path;
  }
  }
  closedir ($dh); // on ferme le repertoire courant
  if (isset ($tableau)) {
  return $tableau;
  }
  }

  function copier_rep ($destination, $reps, $tableau_dir = array ()) {
  if (empty ($tableau_dir)) {
  //echo 'Entrée';
  $tableau_dir = create_tab ($reps);
  }
  if (!is_array ($reps)) {
  $reps = array ($reps);
  }
  foreach ($reps as $rep) {
  if (!is_dir ($destination.'/'.basename ($rep))) {
  mkdir ($destination.'/'.basename ($rep));
  if (!empty ($tableau_dir[$rep]['file']) && isset($tableau_dir[$rep]['file']) && is_array ($tableau_dir[$rep]['file'])) {
  foreach ($tableau_dir[$rep]['file'] as $fichier) {
  copy ($fichier, $destination.'/'.basename ($rep).'/'.basename ($fichier));
  }
  }
  if (!empty ($tableau_dir[$rep]['dir']) && isset ($tableau_dir[$rep]['dir']) && is_array ($tableau_dir[$rep]['dir'])) {
  copier_rep ($destination.'/'.basename ($rep), $tableau_dir[$rep]['dir'], $tableau_dir);
  }
  }
  }
  }  
     
  ?>
      <?php
      if ( isset ( $_POST['submit'] ) ) {
        $repertoire = $_POST['repertoire'];
          MakeDir($repertoire);
          echo "repertoire ". $repertoire ." correctement inséré
";           
        copier_rep ($repertoire, 'source'); // 1er paramètre : le répertoire de destination sous forme d'une chaine
                                  // 2d paramètre : le répertoire à copier sous forme d'une chaine ou d'un tableau

}
?>           
<form action = "" method="post">
  ----

    Nom de sous domaine :,
    ,
 
  ----
 
    <center></center>,
        

</form>

Voilà le code complet...
Burnside.

..:: Enjoy living in hell ::..
http://www.art-line.be
0
Rejoignez-nous