Pbl vérification type fichier dans l'envoi de fichier...
Dernière réponse : dans Programmation
Bonjour à tous!!
Mon problème est que lorsque j'envoie un fichier avec mon formulaire d'upload, que ce soit une image jpg ou autre il m'affiche à TOUS les coups l'erreur disant que le fichier n'est pas une image jpg...
Aidez moi svp
voici mon code:
<?php
if(isset($_FILES["fichier"]))
{
if(isset($_FILES["fichier"])==NULL){}
else
{
$rep="fichier_kiki/"; //changer le nom du repertoire
$savefile= $rep.$_FILES['fichier']['name'];
$temp = $_FILES['fichier']['tmp_name'];
$nom_fich=$_FILES['fichier']['name'];
echo "$nom_fich<br/>";
//vérifie l'extention de l'image (jpeg ou jpg)
if($_FILES['fichier']['type'] != "image/pjpeg")
{
echo "L'image que vous avez envoyé n'est pas au format JPG/JPEG";
}
else
{
list($largeur, $hauteur)=getimagesize($savefile); //récupère les dimensions de l'image
if($largeur!=192 OR $hauteur!=204)
{
echo "L'image ne fait pas les dimentions 192*204... Redimentionnez votre image!";
}
else //si les dimensions sont bonnes et que l'extention est bonne, il envoie sur le serveur
{
if(move_uploaded_file($temp, $savefile))
{ ?>
<p align=center><b>Vous avez bien envoyé l'image :</b></P>
<table align=center>
<tr><td>Nom :</td><td> <?echo $_FILES['fichier']['name'];?></td></tr>
<tr><td>Taille : </td><td> <?echo $_FILES['fichier']['size'];?> oct</td><td><?echo "$largeur * $hauteur"; ?></td></tr>
<tr><td>Type : </td><td> <?echo $_FILES['fichier']['type'];?></td></tr>
</table><?
}
else
{
echo "ERREUR. Fichier non transféré";
}
}
}
}
}
?>
Merci d'avance à ceux qui m'aideront :-D :-?
Mon problème est que lorsque j'envoie un fichier avec mon formulaire d'upload, que ce soit une image jpg ou autre il m'affiche à TOUS les coups l'erreur disant que le fichier n'est pas une image jpg...
Aidez moi svp
voici mon code:
<?php
if(isset($_FILES["fichier"]))
{
if(isset($_FILES["fichier"])==NULL){}
else
{
$rep="fichier_kiki/"; //changer le nom du repertoire
$savefile= $rep.$_FILES['fichier']['name'];
$temp = $_FILES['fichier']['tmp_name'];
$nom_fich=$_FILES['fichier']['name'];
echo "$nom_fich<br/>";
//vérifie l'extention de l'image (jpeg ou jpg)
if($_FILES['fichier']['type'] != "image/pjpeg")
{
echo "L'image que vous avez envoyé n'est pas au format JPG/JPEG";
}
else
{
list($largeur, $hauteur)=getimagesize($savefile); //récupère les dimensions de l'image
if($largeur!=192 OR $hauteur!=204)
{
echo "L'image ne fait pas les dimentions 192*204... Redimentionnez votre image!";
}
else //si les dimensions sont bonnes et que l'extention est bonne, il envoie sur le serveur
{
if(move_uploaded_file($temp, $savefile))
{ ?>
<p align=center><b>Vous avez bien envoyé l'image :</b></P>
<table align=center>
<tr><td>Nom :</td><td> <?echo $_FILES['fichier']['name'];?></td></tr>
<tr><td>Taille : </td><td> <?echo $_FILES['fichier']['size'];?> oct</td><td><?echo "$largeur * $hauteur"; ?></td></tr>
<tr><td>Type : </td><td> <?echo $_FILES['fichier']['type'];?></td></tr>
</table><?
}
else
{
echo "ERREUR. Fichier non transféré";
}
}
}
}
}
?>
Merci d'avance à ceux qui m'aideront :-D :-?
Autres pages sur : pbl verification type fichier envoi fichier
Lassé par la pub ? Créez un compte
pas vraiment
la négation d'un OR n'est pas OR mais AND.
en effet, j'avais pas réfléchit là dessus! Merci tu m'a enlevé un grosse épine du pied! Mais.... dsl ^^ un problème en cache un autre et c'est maintenant avec le if qui suit que ça bloque
en effet, même si l'image est aux bonne dimensions, il m'affiche le message... je suppose que c'est le moyen pour récupéré les dimensions qui est foireux... :-? Dans ce cas, aurai tu une meilleur technique à me proposer? :-P
Merci d'avance!!
la négation d'un OR n'est pas OR mais AND.
en effet, j'avais pas réfléchit là dessus! Merci tu m'a enlevé un grosse épine du pied! Mais.... dsl ^^ un problème en cache un autre et c'est maintenant avec le if qui suit que ça bloque
en effet, même si l'image est aux bonne dimensions, il m'affiche le message... je suppose que c'est le moyen pour récupéré les dimensions qui est foireux... :-? Dans ce cas, aurai tu une meilleur technique à me proposer? :-P
Merci d'avance!!
j'ai modifié le code (même avec un AND ça ne marchait pas, l'erreur revenait...) et j'ai mis ce que tu a proposé milmot :
if(!($largeur=272 OR $hauteur=204))
{
echo "L'image ne fait pas les dimentions 272*204... Redimentionnez votre image!";
}
et là ça marche! c'est bizarre! tu a pourtant dit que les 2 s'équivaut... :-o
if(!($largeur=272 OR $hauteur=204))
{
echo "L'image ne fait pas les dimentions 272*204... Redimentionnez votre image!";
}
et là ça marche! c'est bizarre! tu a pourtant dit que les 2 s'équivaut... :-o
bon alors m'être renseigner j'ai un peu modifier mon code comme ça:
$size = getimagesize($temp);
$largeur=$size[0];
$hauteur=$size[1];
if($largeur!=272 AND $hauteur!=204)
{
echo "L'image ne fait pas les dimentions 272*204... Redimentionnez votre image!";
}
mais par contre ça ne marche toujours pas :-?
je pense que cela vient du $temp.... l'image est vraiment stockée là? c'est pas le nom temporaire du fichier??
$temp = $_FILES['fichier']['tmp_name'];
$size = getimagesize($temp);
$largeur=$size[0];
$hauteur=$size[1];
if($largeur!=272 AND $hauteur!=204)
{
echo "L'image ne fait pas les dimentions 272*204... Redimentionnez votre image!";
}
mais par contre ça ne marche toujours pas :-?
je pense que cela vient du $temp.... l'image est vraiment stockée là? c'est pas le nom temporaire du fichier??
$temp = $_FILES['fichier']['tmp_name'];
bah justement ils ne vallent rien :s
J'ai alors modifier le dossier temporaire dans le php.ini pour voir si les fichiers temps apparaissaient mais non ils n'apparaissent pas :s :s :s
ça veux donc dire qu'il y a problème lors du transfert, mais pourtant, il récupère le nom du fichier avec $_FILES['fichier']['name'] (je le fait afficher sans problème).
J'ai alors de décidé de tranférer le fichier directement et après de faire joujou avec... mais ça ne marche pas, il n'apparait pas dans le dossier où il devrai!
Bref cela est bizarre et je m'en sort pas!
Je vous remet le code modifié au cas où :-?
<!--header à insérer sur toutes les pages-->
<html>
<head>
<title><?php echo "$title"; ?></title>
</head>
<body>
<FORM METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE VALUE=5000>
<INPUT TYPE=FILE NAME="fichier">
<INPUT TYPE=SUBMIT value="Enregistrer le fichier">
</FORM>
<?php
if(!empty($_FILES['fichier']))
{
$rep="fichier_kiki/"; //changer le nom du repertoire
$nom_fich=$_FILES['fichier']['name'];
$temp = $_FILES['fichier']['tmp_name'];
$savefile= $rep.$nom_fich;
echo "$nom_fich<br/>";
move_uploaded_file($temp, $savefile);
//vérifie l'extention de l'image (jpeg ou jpg)
if(strrchr("image.jpg",".")!=strrchr($nom_fich,".") AND strrchr("image.jpeg",".")!=strrchr($nom_fich,".") AND strrchr("image.JPG",".")!=strrchr($nom_fich,".") AND strrchr("image.JPEG",".")!=strrchr($nom_fich,".")) /*$_FILES['fichier']['type'] != "image/gif"*/
{
echo "L'image que vous voullez envoyer n'est pas au format JPG/JPEG";
//unlink($savefile);
}
else
{
list($largeur, $hauteur)=getimagesize($savefile); //récupère les dimensions de l'image
/*$size_img = getimagesize($savefile);
echo "$size_img[0]";*/
if($largeur != 272 && $hauteur != 204)
{
echo "L'image ne fait pas les dimentions 272*204 pixels... Redimentionnez votre image!";
//unlink($savefile);
}
else //si les dimensions sont bonnes et que l'extention est bonne, il envoie sur le serveur
{
/*if(move_uploaded_file($temp, $savefile))
{ ?>
<p align=center><b>Vous avez bien envoyé l'image :</b></P>
<table align=center>
<tr><td>Nom :</td><td> <?echo $_FILES['fichier']['name'];?></td></tr>
<tr><td>Taille : </td><td> <?echo $_FILES['fichier']['size'];?> oct</td><td><?echo "$largeur * $hauteur"; ?></td></tr>
<tr><td>Type : </td><td> <?echo $_FILES['fichier']['type'];?></td></tr>
</table><?
}
else
{
echo "ERREUR. Fichier non transféré";
}*/
}
}
}
?>
</body>
</html>
MErci d'avance de m'aider
J'ai alors modifier le dossier temporaire dans le php.ini pour voir si les fichiers temps apparaissaient mais non ils n'apparaissent pas :s :s :s
ça veux donc dire qu'il y a problème lors du transfert, mais pourtant, il récupère le nom du fichier avec $_FILES['fichier']['name'] (je le fait afficher sans problème).
J'ai alors de décidé de tranférer le fichier directement et après de faire joujou avec... mais ça ne marche pas, il n'apparait pas dans le dossier où il devrai!
Bref cela est bizarre et je m'en sort pas!
Je vous remet le code modifié au cas où :-?
<!--header à insérer sur toutes les pages-->
<html>
<head>
<title><?php echo "$title"; ?></title>
</head>
<body>
<FORM METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE VALUE=5000>
<INPUT TYPE=FILE NAME="fichier">
<INPUT TYPE=SUBMIT value="Enregistrer le fichier">
</FORM>
<?php
if(!empty($_FILES['fichier']))
{
$rep="fichier_kiki/"; //changer le nom du repertoire
$nom_fich=$_FILES['fichier']['name'];
$temp = $_FILES['fichier']['tmp_name'];
$savefile= $rep.$nom_fich;
echo "$nom_fich<br/>";
move_uploaded_file($temp, $savefile);
//vérifie l'extention de l'image (jpeg ou jpg)
if(strrchr("image.jpg",".")!=strrchr($nom_fich,".") AND strrchr("image.jpeg",".")!=strrchr($nom_fich,".") AND strrchr("image.JPG",".")!=strrchr($nom_fich,".") AND strrchr("image.JPEG",".")!=strrchr($nom_fich,".")) /*$_FILES['fichier']['type'] != "image/gif"*/
{
echo "L'image que vous voullez envoyer n'est pas au format JPG/JPEG";
//unlink($savefile);
}
else
{
list($largeur, $hauteur)=getimagesize($savefile); //récupère les dimensions de l'image
/*$size_img = getimagesize($savefile);
echo "$size_img[0]";*/
if($largeur != 272 && $hauteur != 204)
{
echo "L'image ne fait pas les dimentions 272*204 pixels... Redimentionnez votre image!";
//unlink($savefile);
}
else //si les dimensions sont bonnes et que l'extention est bonne, il envoie sur le serveur
{
/*if(move_uploaded_file($temp, $savefile))
{ ?>
<p align=center><b>Vous avez bien envoyé l'image :</b></P>
<table align=center>
<tr><td>Nom :</td><td> <?echo $_FILES['fichier']['name'];?></td></tr>
<tr><td>Taille : </td><td> <?echo $_FILES['fichier']['size'];?> oct</td><td><?echo "$largeur * $hauteur"; ?></td></tr>
<tr><td>Type : </td><td> <?echo $_FILES['fichier']['type'];?></td></tr>
</table><?
}
else
{
echo "ERREUR. Fichier non transféré";
}*/
}
}
}
?>
</body>
</html>
MErci d'avance de m'aider
que ce soit avec $savefile ou $temp ça ne fait rien, les variables $size_img[0] ou $largeur ne se remplissent pas quelque soit la méthode (list($largeur,$hauteur)=getimagesize($_FILES['fichier']['tmp_name']); ou $size_img = getimagesize($_FILES['fichier']['tmp_name']); echo "$size_img[0]";)
Bref je n'y comprend rien :-x
Bref je n'y comprend rien :-x
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :