Affichage d'un message non desire [Résolu]

Signaler
Messages postés
104
Date d'inscription
dimanche 23 juillet 2006
Statut
Membre
Dernière intervention
15 août 2009
-
Messages postés
104
Date d'inscription
dimanche 23 juillet 2006
Statut
Membre
Dernière intervention
15 août 2009
-
Bonjour,

Je suis entrain de me remettre dans le php et je n'arrive plus à faire fonctionne correctement mon code

J'avais cree avec des bout de code y à un bon moment un petit upload d'image
Mais je viens de m'apercevoir que si je laisse vide le champ de l'image il me met "le fichier doit être au format ..."

Et j'aimerais qu'il me l'affiche que si c'est pas le bon format
Et quand y à aucune image d'envoyé il m'affiche rien

J'ai essayer plusieurs fois en changeant les empty et isset mais je pense que je le change pas au bonne endroit ou que mon code est dans le mauvais sens

Voici la version que j'avais au début sans mes changement qui ne fonctionne pas

J'espere mettre expliqué et avoir été compris
Merci d'avance à la ou les personnes pour leur(s) reponse


if (isset($_FILES['fichier']))
{
$msgimg = "";
$poids_max 512000; // Poids max de l'image en octets (1Ko 1024 octets)
$repertoire = 'upload/news/'; // Repertoire d'upload
list($width, $height, $type, $attr) = getimagesize($_FILES['fichier']['tmp_name']);
// On vérifie le type du fichier
if ($_FILES['fichier']['type'] != 'image/png' && $_FILES['fichier']['type'] != 'image/jpeg' && $_FILES['fichier']['type'] != 'image/jpg' && $_FILES['fichier']['type'] != 'image/gif')
{
$erreur = 'Le fichier doit être au format *.jpeg, *.gif ou *.png .';
}// On vérifit le poids de l'image
else if ($_FILES['fichier']['size'] > $poids_max)
{
$erreur = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.';
} // On vérifit si le répertoire d'upload existe
elseif (!file_exists($repertoire))
{
$erreur = 'Erreur, le dossier d\'upload n\'existe pas.';
}
else if($width>300 || $height>300) // si superieur
{
$erreur = 'Erreur, image supérieure à 300x300 pixels';
}
// Si il y a une erreur on l'affiche sinon on peut uploader
if(isset($erreur))
{
$msgimg = '' . $erreur . '

';
}
else
{ // On définit l'extention du fichier puis on le nomme par le timestamp actuel
if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpeg'; }
if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpg'; }
if ($_FILES['fichier']['type'] == 'image/png') { $extention = '.png'; }
if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.gif'; }
$nom_fichier = time().$extention;
// On upload le fichier sur le serveur.
if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier))
{
$msgimg = 'Votre image à été uploadée sur le serveur avec succes!
Voici le nom: '.$nom_fichier.'

';
}
else
{
$msgimg = 'L\'image n\'a pas pu être uploadée sur le serveur

';
} } }

8 réponses

Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
Salut, la syntaxe est un peu brouillon et certain tests sont fait dans le mauvais ordre mais en gros c'est bien, tien je t'ai fais une version plus clair, a toi de voir si tu la préfere

$msgimg = "";$poids_max 512000; // Poids max de l'image en octets (1Ko 1024 octets)
$repertoire = 'upload/news/'; // Repertoire d'upload

if ($_FILES['fichier']['tmp_name'] && file_exists($_FILES['fichier']['tmp_name'])) // On commence par vérifié si le fichier a bien été uploader
{
  if (file_exists($repertoire)) // On vérifie si le repertoire existe
  {
    if ($_FILES['fichier']['size'] < $poids_max) //Ensuite on regarde si le fichier n'est pas trop gros
    {
      list($width, $height, $type, $attr) = getimagesize($_FILES['fichier']['tmp_name']);
      if (($type===1) || ($type===2) || ($type===3)) //Si le fichier est une image 1=gif / 2=jpg / 3=png
      {
        if($width<300 || $height<300) //On s'assure que l'image ne fait pas plus de 300pixel de haut  et de large
        {
          $ext=Array('.gif','.jpg','.png');
          $nom_fichier = time().rand(0,100).$ext[$type-1];
          if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier)) //On déplace l'image dans le dossier
          {
            $msgimg = '<center>
Votre image à été uploadée sur le serveur avec succes!
Voici le nom: '.$nom_fichier.'
</center>';
          }
          else  //Si l'image n'a pas pu etre déplacé
            $msgimg = '<center>
Aucun upload na été demande
</center>';
        }
        else // L'image fait plus que 300x300
          $msgimg = 'Erreur, image supérieure à 300x300 pixels'; 
      }
      else  // L'image n'est pas au bon format
        $msgimg = 'Le fichier doit être au format *.jpeg, *.gif ou *.png .';
    }
    else  //L'image est trop lourde
       $msgimg = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.'; 
  }
  else 
    $msgimg = 'Erreur, le dossier d\'upload n\'existe pas.';
}
else 
    $msgimg = '<center>
Aucun upload na été demande
</center>';       

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
Salut,
Pour vérifier qu'un fichier a bien été uploadé, vérifie que le fichier existe et/ou qu'il a un nom!

exemple:
if (!empty($fichier_temp) && is_uploaded_file($fichier_temp)) {
// alors le fichier existe et a été bien uploader
}

else{
//alors le fichier n'existe pas : erreur de transfert ou le champ était vide
}

Et un petit conseil pour la route:
Ne te fis pas au type renvoyé par le navigateur si tu veux savoir s'il sagit bien d'une image.
Tu utilise déja getimagesize, mais pas pour vérifié si il sagit d'un bon format, ce qui serait justement judicieux.

Exemple:

list($width, $height, $type, $attr) = getimagesize($_FILES['fichier']['tmp_name']);

// On vérifie le type du fichier

       // types de fichiers : 1=gif / 2=jpg / 3=png

       if (($type===1) || ($type===2) || ($type===3)) {
         // c'est bien une image
       }
       else
       {
          //c'est pas une image, ou le format n'est pas permis!
        }

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
Salut,
J'oubliais...
tu peux remplacé :

if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpeg'; }

if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpg'; }

if ($_FILES['fichier']['type'] == 'image/png') { $extention = '.png'; }

if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.gif'; }

par

$ext=Array('.gif','.jpg','.png');
$nom_fichier = time().$ext[$type-1];

Et puis ajoute un chiffre aléatoire en plus du timestamp, bien que peux probable, il est possible que deux images soit uploadé a la meme seconde.

Tu peux meme généré un nouveau chiffre tant que le fichier existe, mais comme le risque est faible un seul chiffre aléatoire est probablement assez.

Par exemple:
$nom_fichier = time().rand(0,100).$ext[$type-1];

a+

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
Messages postés
104
Date d'inscription
dimanche 23 juillet 2006
Statut
Membre
Dernière intervention
15 août 2009

Salut
Merci de ta reponse je test avec tes changement et jte fait voir mon code pour savoir si jai bien compris ton explication
Messages postés
104
Date d'inscription
dimanche 23 juillet 2006
Statut
Membre
Dernière intervention
15 août 2009

Bon j'ai fait sa mais le prob cest qu'il minsere bien le nom de l'image dans la base mais il me fou pas l'image dans le dossier et m'indique à la fin de l'insertion toujours le message
"L'image à pas ete uploader..."

Je continu mes recherches en attendant une reponse
J'epere trouve sans avoir bessoin de reponse ^^

Voici le code pour le moment modifie

if (isset($_FILES['fichier']))
{
$msgimg = "";$poids_max 512000; // Poids max de l'image en octets (1Ko 1024 octets)
$repertoire = 'upload/news/'; // Repertoire d'upload 
list($width, $height, $type, $attr) = getimagesize($_FILES['fichier']['tmp_name']);
/* On vérifie le type du fichier
Types de fichiers : 1=gif / 2=jpg / 3=png */
if (($type===1) || ($type===2) || ($type===3)) { // c'est bien une image
       }
else {//c'est pas une image, ou le format n'est pas permis!
$msgimg = 'Le fichier doit être au format *.jpeg, *.gif ou *.png .';
   }// On vérifit le poids de l'image
if ($_FILES['fichier']['size'] > $poids_max)
{
$msgimg = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.';
   } // On vérifit si le répertoire d'upload existe  
else if (!file_exists($repertoire)) {
$msgimg = 'Erreur, le dossier d\'upload n\'existe pas.';
}
else if($width>300 || $height>300) // si superieur
{
$msgimg = 'Erreur, image supérieure à 300x300 pixels';
}
$ext=Array('.gif','.jpg','.png');
$nom_fichier = time().rand(0,100).$ext[$type-1];
// On upload le fichier sur le serveur et on verifie sont existance
if (!empty($fichier_temp) && is_uploaded_file($fichier_temp))
{
$msgimg = '<center>
Votre image à été uploadée sur le serveur avec succes!
Voici le nom: '.$nom_fichier.'
</center>';
}
else
{
$msgimg = '<center>
L\'image n\'a pas pu être uploadée sur le serveur
</center>';
}
   } //On ferme if (isset($_FILES['fichier']))
Messages postés
104
Date d'inscription
dimanche 23 juillet 2006
Statut
Membre
Dernière intervention
15 août 2009

Bon j'ai fait sa mais le prob cest qu'il minsere bien le nom de l'image dans la base mais il me fou pas l'image dans le dossier et m'indique à la fin de l'insertion toujours le message
"L'image à pas ete uploader..."

Je continu mes recherches en attendant une reponse
J'epere trouve sans avoir bessoin de reponse ^^

Voici le code pour le moment modifie

if (isset($_FILES['fichier']))
{
$msgimg = "";$poids_max 512000; // Poids max de l'image en octets (1Ko 1024 octets)
$repertoire = 'upload/news/'; // Repertoire d'upload 
list($width, $height, $type, $attr) = getimagesize($_FILES['fichier']['tmp_name']);
/* On vérifie le type du fichier
Types de fichiers : 1=gif / 2=jpg / 3=png */
if (($type===1) || ($type===2) || ($type===3)) { // c'est bien une image
       }
else {//c'est pas une image, ou le format n'est pas permis!
$msgimg = 'Le fichier doit être au format *.jpeg, *.gif ou *.png .';
   }// On vérifit le poids de l'image
if ($_FILES['fichier']['size'] > $poids_max)
{
$msgimg = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.';
   } // On vérifit si le répertoire d'upload existe  
else if (!file_exists($repertoire)) {
$msgimg = 'Erreur, le dossier d\'upload n\'existe pas.';
}
else if($width>300 || $height>300) // si superieur
{
$msgimg = 'Erreur, image supérieure à 300x300 pixels';
}
$ext=Array('.gif','.jpg','.png');
$nom_fichier = time().rand(0,100).$ext[$type-1];
// On upload le fichier sur le serveur et on verifie sont existance
if (!empty($fichier_temp) && is_uploaded_file($fichier_temp))
{
$msgimg = '<center>
Votre image à été uploadée sur le serveur avec succes!
Voici le nom: '.$nom_fichier.'
</center>';
}
else
{
$msgimg = '<center>
L\'image n\'a pas pu être uploadée sur le serveur
</center>';
}
   } //On ferme if (isset($_FILES['fichier']))
Messages postés
104
Date d'inscription
dimanche 23 juillet 2006
Statut
Membre
Dernière intervention
15 août 2009

Desole je sais pas pourquoi le message à été double


Voila j'ai virer la premier verif
if (isset($_FILES['fichier']))  {

Et deplace quelque truc et sa marche nikel voici le code terminer
Merci pour ton aide tu pourra juste me confirme si mon code est acceptable niveau sintaxe stp

$msgimg = "";$poids_max 512000; // Poids max de l'image en octets (1Ko 1024 octets)
$repertoire = 'upload/news/'; // Repertoire d'upload 
list($width, $height, $type, $attr) = getimagesize($_FILES['fichier']['tmp_name']);
/* On vérifie le type du fichier
Types de fichiers : 1=gif / 2=jpg / 3=png */
if (($type===1) || ($type===2) || ($type===3)) { // c'est bien une image
// On vérifie le poids de l'image
if ($_FILES['fichier']['size'] > $poids_max)
{
$msgimg = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.';
   } // On vérifie si le répertoire d'upload existe  
else if (!file_exists($repertoire)) {
$msgimg = 'Erreur, le dossier d\'upload n\'existe pas.';
}
else if($width>300 || $height>300) // si superieur
{
$msgimg = 'Erreur, image supérieure à 300x300 pixels';
}
$ext=Array('.gif','.jpg','.png');
$nom_fichier = time().rand(0,100).$ext[$type-1];
       } //if (($type===1) || ($type===2) || ($type===3))
//C'est pas une image, ou le format n'est pas permis!   
else {
$msgimg = 'Le fichier doit être au format *.jpeg, *.gif ou *.png .';
}
// On upload le fichier sur le serveur et on verifie sont existance
if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier))
{
$msgimg = '<center>
Votre image à été uploadée sur le serveur avec succes!
Voici le nom: '.$nom_fichier.'
</center>';
}
else
{
$msgimg = '<center>
Aucun upload na été demande
</center>';
}
Messages postés
104
Date d'inscription
dimanche 23 juillet 2006
Statut
Membre
Dernière intervention
15 août 2009

Merci beaucoup c'est vrai que c'est plus clair dans se sens merci pour tes conseils et d'avoir mit mon code dans l'odre

A+ Bonne journée