Aller au contenu

problème images


mojosi

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.


<?php

include("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

Lien vers le commentaire
Partager sur d’autres sites

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;

Lien vers le commentaire
Partager sur d’autres sites

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


<?php

class 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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...