Probléme supression de repertoire sur le ftp via l'admin

Eléphanteau du PHP | 36 Messages

27 oct. 2008, 09:00

Bonjour,

Voilà j'ai un souci avec mes fichiers car je n'arrive pas a supprimer mes répertoire.
Je n'utilise pas de base sql pour la gestion de mes repertoires

Je vous donne mes 3 fichiers de mon espace admin ( index ,supprimer et add )

index:
<?php

include 'inc_haut_page.php';

echo '<h1> Créer une galerie : </h1>';
echo '<form action="add_galerie.php" enctype="multipart/form-data" method="post">';
echo 'Nouveau dossier: <input type="text" name="new_gal" size="50" /><br />';
echo '<input type="submit" name="Valider" value="Valider" />';
echo '</form>';
echo '<h1> Ou choisir une galerie :</h1>';
$dir = "../galeries/";
// On vérifie si le dossier existe bien
if (is_dir($dir)) 
{
	echo '<table>';
	echo '<tr><th>Galerie</th><th>Supprimer</th><th>Renommer</th></tr>';
	// On enregistre les entrées du dossier dans la variable entree
	$entree = opendir($dir);
	// boucle pour lister tout les éléments du dossier
	while (($file = readdir($entree)) !== false) 
		{
			// on affiche que les dossiers et pas les dossiers racines (.) et (..)
			if (is_dir($dir . $file)  && $file !="." && $file !="..")
			{
			// on crée un tableau avec le résultat en supprimant les 2 premiers caracteres (numéro du repertoire)
			echo '<tr>';
            echo '<td><a href="galerie.php?galerie='.$file.'/'.'">'.substr($file,2).'</a></td>';
			echo '<td><a href="suppr_galerie.php?galerie='.$file.'/'.'">Supprimer</a></td>';
			echo '<td><a href="ren_galerie.php?galerie='.$file.'/'.'">Renommer</a></td>';
			echo '</tr>';
			}
        }
	closedir($entree);
}
echo '</table>';
include 'inc_bas_page.php';
?>
supprimer:
<?php

/**
 @return boolean true si le repertoire $dir et vide, false sinon.
 @param string $dir Nom du repertoire a inspecter.
   @desc Verifie si un repertoire est vide.
**/
function is_empty($dir)
{
$handle = @opendir($dir);
@readdir($handle);
@readdir($handle);
if (false != @readdir($handle)) return false;
else return true;
}

/**
@return -
@param string $dir Nom du repertoire a effacer.
@desc Efface entierement un repertoire. Necessite la fonction is_empty().
 **/
function rm_tree($dir)
{
if ("/" == substr($dir,strlen($dir)-1,1)) $dir = substr($dir,0,strlen($dir)-1);
	if (false == file_exists($dir))
	{
		include 'inc_haut_page.php';
		echo "<font color=\"#FF0000\">Erreur : '".$dir."' n'existe pas.</font><br>\n";
		echo '<a href="index.php">Retour à la galerie</a>';
		include 'inc_bas_page.php';
		return;
	}
	
	if (is_empty($dir)) // Si dossier vide
	{
	rmdir($dir);// Efface le dossier
	return;
	}
// Sinon parcours le dossier
$handle = @opendir($dir);
@readdir($handle);
@readdir($handle);

	while ($file = @readdir($handle))
	{
		$fichier= $file;
		$file = $dir."/".$file;
		if (is_dir($file)) // Si c'est un sous-dossier
		{
			if (is_empty($file)) rmdir($file); // Si sous-dossier vide, supprime le dossier
			else rm_tree($file); // Si sous-dossier non vide, lance la fonction rm_tree pour effacer ce qu'il contient
		} 
else
{
	unlink($file); // Si c'est un fichier efface le fichier
	// modifie la variable photo pour l'adapter à la suppression du commentaire associé
	$photo='c_'.substr($fichier,0,-4);
	// Crée l'objet domdocument
	$doc = new DomDocument('1.0','utf-8');
	// Charge le ui.xml dans le domdocument
	$doc->load('../ui.xml');
	// récupère l'élément racine du document
	$contenu = $doc->documentElement;
	// cherche le commentaire de la photo
	$comment = $contenu->getElementsByTagName($photo)->item(0);
	// Vérifie si le commentaire existe
	
	if (!empty($comment))
	{
		// Supprime le commentaire
		$supprim = $contenu->removeChild($comment);
		// Sauvegarde le nouveau commentaire dans le fichier .xml
		$doc->save('../ui.xml');
	}
}
}

rmdir($dir); // Efface le sous-dossier vidé
}
$nom_galerie='../galeries/'.addslashes($_GET['galerie']);
rm_tree($nom_galerie);
header('Location: index.php');
?>



et en cas de besoin voici mon fichier add:
<?php

$dir = "../galeries/";
$galerie='00'.addslashes($_POST['new_gal']);
if (!is_dir($dir.$galerie) && !empty($galerie) && $galerie != '00')
{
//Fonction pour enlever les caractères non standards
function enlever_accents($dest_fichier){
$dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ/', 
                                     'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy/');
//remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z\/0-9]+)/i', '_', $dest_fichier);
return $dest_fichier;
}
$galerie = enlever_accents($galerie);
mkdir($dir.$galerie, 0755);
chmod($dir.$galerie, 0755);
}
header('Location: index.php');
?>



Merci d'avance pour votre aide

lux
Eléphant du PHP | 372 Messages

27 oct. 2008, 12:01

Et si tu nous disais ce qui est exactement le problème ? Un message d'erreur ? Quelle partie du code ne marche pas ? Elle devrait faire quoi, et que se passe-t'il ? :wink:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 oct. 2008, 12:19

...et si tu retirais toutes les arobase qui trainent dans ton code pour masquer les messages d'erreur, ça serait peut être un bon point de départ ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 36 Messages

27 oct. 2008, 20:41

Bonsoir lux pour repondre a ta question
Et si tu nous disais ce qui est exactement le problème ? Un message d'erreur ? Quelle partie du code ne marche pas ? Elle devrait faire quoi, et que se passe-t'il ?
No je n'est aucun message d'erreur , la seule chose ont dirais qu'il actualise la page mais le repertoire ne s'efface pas ni dans l'admin ni sur le ftp

Je tiens a dire que c'est un script récuperer que j'ai installer

@rthur

Enfaite comme je suis dans le forum debutant ( Je suis débutant :P )

Comme dit plus haut c'est un script que j'ai installer et que j'ai adapter a mon site , je n'est pas toucher les fichiers admin donc je ne sais pas a quoi sert les @ sur les fichiers ?

lol je viens de réediter le post que tu ma donner la reponse :lol:

Je vais essayer de les enlever afin de voir les message si y' en a ?

Merci encore


Donc aprés avoir enlever tous les @ sur mon fichier supprimer cela reste idem pas de suppression de repertoire , pas de message d'erreurs

La seule chose un chargement de la page ou plutôt une actualisation de la page :? .

Je sais pas trop enfin je dirais une actualisation car vu le fichier supprime il devrait m'envoyer dessu puis m'afficher un lien retour a l'index apres la suppression du repertoire . No ?

Ha oui si je regarde le lien supprime sur mon index en fessant clic droite propriete j'ai le lien ci-dessou !
http://rolandchaigne.com/admin/suppr_ga ... =00nature/

sur mon ftp c'est bien afficher 00nature donc je comprend pas trop pourquoi y'a le / a la fin ?

Voilà j'espere que vous pourrez m'aider :(

Eléphanteau du PHP | 36 Messages

28 oct. 2008, 20:21

Un up svp j'ai besoin de vous :(