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 "<b>repertoire ". $repertoire ." correctement inséré<b><br />";
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">
<table width="500" border="0">
<tr>
<td>Nom de sous domaine :</td>
<td><input type = "text" name = "repertoire" value="" size="30"></td>
</tr>
<tr>
<td colspan="2"><center><input type = "submit" value = "Envoyer" name="submit"></center></td>
</tr>
</table>
</form>
Voilà le code complet...
Burnside.
..:: Enjoy living in hell ::..
