Erreur(s) dans mon script d'upload ?

Eléphant du PHP | 148 Messages

06 déc. 2005, 16:50

Bonjour à tous !

Voici mon problème, sur lequel je bloque depuis un certain temps :

j'ai fais un petit script d'upload d'image, donc avec vérification du type de fichier posté par l'utilisateur.

Le problème, c'est qu'il me renvoie toujours la même erreur : le type du fichier ne correspond pas au types de fichier autorisés, alors que si !!

Voici mon code :
if ($photo!="") // je précise que $photo=$_FILES['photo']
			{
			if (isset($_POST['ajoutArticle']) && ($_POST['ajoutArticle']=="ok")) // si formulaire soumis
				{
				$repertoire ="../../images/boutique/articles/"; // dossier où sera déplacé le fichier
			
				$tmp_file = $_FILES['photo']['tmp_name'];
			
				if( !is_uploaded_file($tmp_file) )
					{
					exit("Le fichier est introuvable");
					}
			
				// on vérifie maintenant l'extension
				$type_file = $_FILES['photo']['type'];
			
				if( !strstr($type_file, 'image/jpeg') && !strstr($type_file, 'image/gif'))
					{
					exit("Le fichier n'est pas valide, seuls les .jpeg, .jpg, .jpe et les .gif sont valides.");
					}
			
				// on copie le fichier dans le dossier de destination
				$name_file = $_FILES['photo']['name'];
			
				if( !move_uploaded_file($tmp_file, $repertoire . $name_file) )
					{
					exit("Impossible de copier le fichier dans $repertoire");
					}
			
				echo "Le fichier ''$name_file'' a bien été uploadé<br>";
			}
		}
		else
			{
			$photo_name="photo000.jpg";	//photo par défaut
			}
Le script a marché à un moment, mais j'ai modifié un truc, je ne sais plus quoi, et maintenant, ça marche plus...

Une idée ?

Merci d'avance ;)
Et hop !

Petit nouveau ! | 9 Messages

06 déc. 2005, 17:20

if(!strstr($type_file, 'image/jpeg') && !strstr($type_file, 'image/gif'))
Ton image ne peu pas être JPEG et GIF à la fois, essayes de remplacer
&&
par or ou
||
!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 déc. 2005, 17:29

if(!strstr($type_file, 'image/jpeg') && !strstr($type_file, 'image/gif'))
Ton image ne peu pas être JPEG et GIF à la fois
Cette ligne signifie que son image n'est NI jpeg, NI gif.

attention aux !
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 148 Messages

06 déc. 2005, 17:45

:oops: OOps !

merci ! bien vu, mais apparemment il y a un autre problème... car j'ai la même erreur...

Bizarre non ?
Et hop !

Eléphant du PHP | 148 Messages

06 déc. 2005, 18:52

Personne n'a d'idée ??
Et hop !

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

06 déc. 2005, 19:24

Mets des else à tous tes if pour le debug et fais un écho de chaque variable importante (celles sur lesquelles tu fais des tests, justement)
if ($photo!="") // je précise que $photo=$_FILES['photo']
            {
            if (isset($_POST['ajoutArticle']) && ($_POST['ajoutArticle']=="ok")) // si formulaire soumis
                {
                $repertoire ="../../images/boutique/articles/"; // dossier où sera déplacé le fichier
            
                $tmp_file = $_FILES['photo']['tmp_name'];
            
                if( !is_uploaded_file($tmp_file) )
                    {
                    exit("Le fichier est introuvable");
                    }else
{
var_dump($tmp_file);
}
            
                // on vérifie maintenant l'extension
                $type_file = $_FILES['photo']['type'];
            
                if( !strstr($type_file, 'image/jpeg') && !strstr($type_file, 'image/gif'))
                    {
var_dump ($type_file);
                 //   exit("Le fichier n'est pas valide, seuls les .jpeg, .jpg, .jpe et les .gif sont valides.");
                    }
else
{
echo "ok";
}
            
                // on copie le fichier dans le dossier de destination
                $name_file = $_FILES['photo']['name'];
            
                if( !move_uploaded_file($tmp_file, $repertoire . $name_file) )
                    {
                    exit("Impossible de copier le fichier dans $repertoire");
                    }
else
{
            
                echo "Le fichier ''$name_file'' a bien été uploadé<br>";
}
            }
        }
        else
            {
            $photo_name="photo000.jpg";    //photo par défaut
            }


Eléphant du PHP | 148 Messages

06 déc. 2005, 23:38

Salut mere-teresa ! :)

C'est très curieux, as-tu changé quelque-chose au code, mis à part les "else" ?

Parce-que là, mon script fonctionne niquel, mis à part le fait qu'il se fiche royalement que le fichier uploadé ne soit pas un jpg ou un gif...
Et hop !

Eléphant du PHP | 148 Messages

06 déc. 2005, 23:51

Hey hey !

en fait j'ai trouvé, merci pour le var_dump ($type_file), je connaissais pas non plus, en fait il semblerait d'après le type renvoyé par le var_dump soit "image/pjpeg", et moi dans mon test, j'avais mis "image/jpeg" type que j'avais trouvé sur le net...mais la page ne devait pas être à jour///

Merci encore !

@ +
Et hop !