8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

j'ai un message d'erreur avec ma fonction unlink et je ne pige pas pourquoi car mes chemins sont bons.

Mon fichier supprimer_document.php est dans le dossier ADMIN
Mon dossier upload est aussi dans le dossier ADMIN

Donc ADMIN/UPLOAD/SOUS_DOSSIER/fichier.xx

Ça n'a pas encore fait tilt dans mon esprit. Si quelqu'un veut bien me mettre sur la piste.

Voilà le message et le code de ma page.

a écrit :
Warning: unlink(upload/actualites/Lettre-typeResiliationdevotrecontratcarte_169763.doc) [function.unlink]: No such file or directory in d:\www\ebloch-dano.com\htdocs\admin\document_supprimer.php on line 28


<?
require "acces/base_open.php";

$id = $_GET["id"];
$document = $_GET["document"];
$type = $_GET["type"];


if($type == "type_actualite")$requete_modifier = "UPDATE types_actualite SET image = NULL WHERE id_type_actualite = ".$id;
if($type == "type_pelemele")$requete_modifier = "UPDATE types_pelemele SET image = NULL WHERE id_type_pelemele = ".$id;
if($type == "livre")$requete_modifier = "UPDATE livres SET photo = NULL WHERE id_livre = ".$id;
if($type == "bio")$requete_modifier = "UPDATE bios SET photo = NULL WHERE id_bio = ".$id;
if($type == "pelemele")$requete_modifier = "UPDATE pelemeles SET cours = NULL WHERE id_pelemele = ".$id;
if($type == "actualite")$requete_modifier = "UPDATE actualites SET cours = NULL WHERE id_actualite = ".$id;
if($type == "accueil")$requete_modifier = "UPDATE accueils SET image = NULL WHERE id_accueil = ".$id;
if($type == "presse")$requete_modifier = "UPDATE presse SET image = NULL WHERE id_presse = ".$id;
$resultat_modifier = mysql_query ($requete_modifier);
		
if($type == "type_actualite")$doc = "upload/typesactualite/".$document;	
if($type == "type_pelemele")$doc = "upload/typespelemele/".$document;		
if($type == "livre")$doc = "upload/livres/".$document;
if($type == "bio")$doc = "upload/bios/".$document;
if($type == "actualite")$doc = "upload/actualites/".$document;
if($type == "pelemele")$doc = "upload/pelemeles/".$document;
if($type == "accueil")$doc = "upload/accueils/".$document;
if($type == "presse")$doc = "upload/presse/".$document;

unlink($doc);

mysql_close($cnx);
if($type == "type_actualite")echo "<script>window.location.href=\"type_actualite_aj.php?id_type_actualite=".$id."\"</script>";
if($type == "type_pelemele")echo "<script>window.location.href=\"type_pelemele_aj.php?id_type_pelemele=".$id."\"</script>";
if($type == "livre")echo "<script>window.location.href=\"livre_aj.php?id_livre=".$id."\"</script>";
if($type == "bio")echo "<script>window.location.href=\"bio_aj.php?id_bio=".$id."\"</script>";
if($type == "pelemele")echo "<script>window.location.href=\"pelemele_aj.php?id_pelemele=".$id."\"</script>";
if($type == "actualite")echo "<script>window.location.href=\"actualite_aj.php?id_actualite=".$id."\"</script>";
if($type == "accueil")echo "<script>window.location.href=\"accueil_aj.php?id_accueil=".$id."\"</script>";
if($type == "presse")echo "<script>window.location.href=\"presse_aj.php?id_presse=".$id."\"</script>";

?>


Merci à tous
Aurélia
Modifié par Fugugirl (23 Jan 2010 - 20:44)
Salut,

Visiblement le fichier n'existe pas. Vérifie la valeur de document et filtre la. Avec ce script on peut facilement supprimer n'importe quel fichier (quand doc vaut "../../document_supprimer.php" par exemple).

Pas un peu lourd la succession de if ? En plus des ifelse aurait était plus approprié...
$sous_dossier = array(
    'type_actualite' => 'typesactualite',
    'type_pelemele' => 'typespelemele',
    'livre' => 'livres',
    'bio' => 'bios',
    /*etc*/
);

if (false !== ($document = une_fonction_de_filtre_anti_mechant_utilisateur($_GET['document']))
   && false !== ($key = array_search($document, $sous_dossier)))
{
    mysql_query('UPDATE '.$key.' SET image = NULL WHERE id'.$key.' = '.$id);
    mysql_close($cnx);
    unlink('upload/'.$sous_dossier[$key].'/'.$doc);
    //pourquoi faire une redirection en js ?
    header('Location: '.$key'._aj.php?id'.$key.'='.$id);
    exit;
}
else
{
    echo 'paramètres pas bon et etc';
}


Mais avant tous ça, on aura bien vérifier que les valeurs GET et le fichier existe pour ne pas avoir d'erreurs.
Une dernière chose, tu as une table pour chaque sous catégorie ?
Salut,

merci de ta réponse.
Mon fichier existe bien... pas de doute, il est bien dans le dossier upload/sous_dossier

Je sais que ce code n'est pas le plus beau de la terre, mais je ne suis pas une codeuse et jusqu'à présent il fonctionnait bien donc je m'en contentais car le php n'est pas mon truc du tout.

Je vais regarder ton code attentivement et tenter de le comprendre Smiley smile

Aurélia.
Re Salut,

je suis désolée mais je ne m'en sors pas avec ton code, je ne sais pas par quel bout le prendre... Comme je le disais précédemment je ne suis pas une développeuse. On m'a aidé en me donnant ce code il y a quelques années et j'avoue être entre temps passé au CMS Spip pour ne plus avoir à me frotter à du PHP de vrai.

Quelle serait la démarche vraiment pour la débutante que je suis pour résoudre ce problème. Visiblement lorsque je veux effacer mon fichier, il l'efface bien mais le lien reste inscrit dans mon backend et donc occasionne des erreurs en affichant le fichier comme toujours lié à mon article. Je ne pige pas pourquoi... cela pourrait-il etre lié aux paramètres de la base de données ? Je suis toute perdue.

Merci encore de votre/ton aide,
Aurélia
Salut,

en reprenant le code de jo_link_noir il faut mettre
mysql_query('UPDATE '.$key.' SET image = NULL WHERE id_'.$key.' = '.$id); 
(_ après id).

Cela dit, si tu fais "du PHP de vrai" il faudrait apprendre (livres, forums spécialisés, tutos, etc.). Smiley cligne
Modifié par Heyoan (26 Jan 2010 - 02:46)