mojosi Posté 12 Novembre 2004 Posté 12 Novembre 2004 Bonjour, J'ais installé un système permettant en passant par une page d'admin de supprimer des photos sur le site et d'en mettre d'autre à la place(sans base de données). Pour supprimer pas de problèmes mais lorsque je veut en mettre une j'ais ce message d'erreur: Warning: Unable to create 'new': Is a directory in /home/fkcars/www/images.class.php on line 10 Une erreur s'est produite ! . Voici le code: function ajouter_image($image) { if (is_dir($this->repertoire)) { if (copy($image, $this->repertoire . $nom)) return true; else return false; } else return false; Merci d'avance mojosi
Anonymus Posté 12 Novembre 2004 Posté 12 Novembre 2004 Tu as plusieurs possibilités. Soit le répertoire n'est pas un répertoire, Soit il n'a pas le droit (CHMOD) de copier des fichiers dans ce répertoire. if (copy($image, $this->repertoire . $nom)) return true; Est ce que $nom est défini ? Sinon, il manquera un argument à 'copy'. Anonymus.
mojosi Posté 12 Novembre 2004 Auteur Posté 12 Novembre 2004 Bonjour, J'envoie le script de la page d'admin. En ce qui concerne les autorisation j''ais bien mis les chmod sauf pour les dossiers images. <?phpinclude("images.class.php");function getextension($fichier) { $bouts = explode(".", $fichier); $extension = array_pop($bouts); return $extension;}if ($_POST['action'] == "ajouter") { if ($image && !empty($_POST['repertoire']) && !empty($_POST['mot_de_passe'])){ if ($_POST['mot_de_passe'] == "xxxxx") { if ($_POST['repertoire'] == "savoirfaire" || $_POST['repertoire'] == "new" || $_POST['repertoire'] == "tuning" ||$_POST['repertoire'] == "presse") { $repertoire = $_POST['repertoire']; $extension = strtolower(getextension($image_name)); if ($extension == "jpg" || $extension == "png" || $extension == "bmp" || $extension == "gif") { $imag = new images(); $imag->repertoire = $repertoire; if ($imag->ajouter_image($image, $image_name)) echo "<font face=\"Verdana\">Le fichier " . $image_name . " a bien été envoyé.</font>"; else echo "<font face=\"Verdana\">Une erreur s'est produite !</font>"; } else echo "<font face=\"Verdana\">Extension interdite !</font>"; } else echo "<font face=\"Verdana\">Repertoire interdit !</font>"; } else echo "<font face=\"Verdana\">Mot de passe incorrect !</font>"; } else echo "<font face=\"Verdana\">Formulaire incomplet !</font>";} else if ($_POST['action'] == "supprimer") { if (!empty($_POST['image']) && !empty($_POST['mot_de_passe'])) { if ($_POST['mot_de_passe'] == "xxxxx") { $extension = strtolower(getextension($image)); if ($extension == "jpg" || $extension == "png" || $extension == "bmp" || $extension == "gif" || $extension == "jpeg") { if (@unlink($image)) echo "<font face=\"Verdana\">L'image <b>$image</b> a bien été suprimé !</font>"; else echo "<font face=\"Verdana\">Une erreur s'est produite !</font>"; } else echo "<font face=\"Verdana\">Extension interdite !</font>"; } else echo "<font face=\"Verdana\">Mot de passe incorrect !</font>"; } else echo "<font face=\"Verdana\">Formulaire incomplet !</font>";}?><html><body><form action="admin_images.php" method="post" enctype="multipart/form-data"><input type="hidden" name="action" value="ajouter"><table><tr><td><font face="Verdana">Repertoire de destination :</font></td><td><select name="repertoire"><option></option><option value="savoirfaire">savoirfaire</option><option value="new">new</option><option value="tuning">tuning</option><option value="presse">presse</option></select></td></tr><tr><td><font face="Verdana">Fichier à envoyer :</font></td><td><input type="file" name="image"></td></tr><tr><td><font face="Verdana">Mot de passe :</font></td><td><input type="password" name="mot_de_passe"></td></tr><tr><td><input type="submit" value="Envoyer image"></td></tr></table></form><hr><form action="admin_images.php" method="post"><input type="hidden" name="action" value="supprimer"><table><tr><td><font face="Verdana">Image à supprimer :</font></td><td><select name="image"><option></option><option value="">+++ presse +++</option><?php$images1 = new images();$images1->repertoire = "presse";$images1->liste_select();?><option value="">+++ savoir-faire +++</option><?php$images2 = new images();$images2->repertoire = "savoirfaire";$images2->liste_select();?><option value="">+++ tuning-news +++</option><?php$images3 = new images();$images3->repertoire = "tuning";$images3->liste_select();?><option value="">+++ new +++</option><?php$images4 = new images();$images4->repertoire = "new";$images4->liste_select();?></select></td></tr><tr><td><font face="Verdana">Mot de passe :</font></td><td><input type="password" name="mot_de_passe"></td></tr><tr><td><input type="submit" value="Supprimer l'image !" style="color: #FF0000;"></td></tr></table></form></body></html><tr><td><font face="Verdana">Mot de passe :</font></td><td><input type="password" name="mot_de_passe"></td></tr><tr><td><input type="submit" value="Supprimer l'image !" style="color: #FF0000;"></td></tr></table></form></body></html> Merci d'avance
Anonymus Posté 12 Novembre 2004 Posté 12 Novembre 2004 En fait, vraisemblablement, c'est le problème de ton $nom. Il n'est pas défini, ce qui fait que le programme essaie de créer le fichier en lui donnant le nom du répertoire. Ce qui n'est pas possible. Pour régler le problème, il faudrait que tu passes le nom du nouveau fichier en paramètre de la fonction, ainsi : function ajouter_image($image,$new_nom) { if (is_dir($this->repertoire)) { if (copy($image, $this->repertoire . $new_nom)) return true;
mojosi Posté 12 Novembre 2004 Auteur Posté 12 Novembre 2004 Ok mais le problème est que j'ais plusieurs répertoires en fonction de la page ou j'envoie la photo donc le nom change. Je fais comment alors?
mojosi Posté 13 Novembre 2004 Auteur Posté 13 Novembre 2004 Rebonjour, J'ais essayé de modifier selon l'exemple qu'on m'as donné et j'ais tjours le même message d'erreur. J'envoie à tout hasard le code du scriptimages_class.php <?phpclass images {var $repertoire;var $nb_par_ligne;function ajouter_image($image,$new_nom) {if (is_dir($this->repertoire)) { if (copy($image, $this->repertoire . $new_nom)) return true; else return false; } else return false;}function lister_repertoire() { $liste = array(); if (is_dir($this->repertoire)) { if ($pointeur = opendir($this->repertoire)) { while (($fichier = readdir($pointeur)) !== false) { if (!is_dir($this->repertoirte . "/" . $fichier)) { $liste[] = $fichier; } } closedir($pointeur); return $liste; } else return false; } else return false;}function liste_select() { $liste = $this->lister_repertoire(); for ($i = 0; $i < count($liste); $i++) { echo " <option value=\"$this->repertoire/$liste[$i]\">$liste[$i]</option>\n"; }}function afficher_liste() { $liste = $this->lister_repertoire(); echo "<table summary=\"table d'images\">\n"; for ($i = 0; $i < count($liste); $i++) { $nom = explode(".", $liste[$i]); $nom = str_replace("_", " ", $nom[0]); $nom = str_replace("-", " ", $nom); $nom = strtoupper(substr($nom, 0, 1)) . substr($nom, 1); if (round($i/$this->nb_par_ligne) == ($i/$this->nb_par_ligne)) echo " <tr>\n"; echo " <td align=\"center\">" . $this->afficher_image($liste[$i]) . "<br></td>\n"; if (round(($i+1)/$this->nb_par_ligne) == (($i+1)/$this->nb_par_ligne) || ($i+2) > count($liste)) echo " </tr>\n"; } echo "</table>\n";}function afficher_image($fichier) { return "<img src=\"" . $this->repertoire . "/" . $fichier . "\" alt=\"" . $fichier . " - " . round((filesize($this->repertoire. "/" . $fichier)/1024), 2) . " ko\">";}}?> si quelqu'un trouve la réponse ça m'aiderait. Merci d'avance mojosi
mojosi Posté 13 Novembre 2004 Auteur Posté 13 Novembre 2004 C'est bon le problème est résolu, merci pour votre aide mojosi
Dan Posté 14 Novembre 2004 Posté 14 Novembre 2004 Bonjour Mojosi, Il serait sympa de ta part de donner la réponse à ceux qui t'ont aidés... c'est une manière de leur faire comprendre qu'ils n'ont pas perdu leur temps en te répondant Dan
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant