La communauté ALL HTML c'est 58420 membres à ce jour dont 7 inscrits aujourd'hui et 26 depuis une semaine.

  • imprimer
  • aide

Forum de discussions « PHP - SQL »

Retrouvez les publications relatives à ces discussions dans nos rubriques PHP, SQL.

Script d'upload d'images fonctionne sous Firefox mais pas sous IE !

liste des forums liste des discussions Participer à la discussion

Photo de davredom Message publié le mercredi 09 juillet 2008 à 09 h 55 par davredom. [;-))] .:: Dom ::.
Bonjour à tous,

J'ai un autre souci avec mon script d'upload.
Voici mon formiulaire :

<form method="post" action="valid_membre.php" enctype="multipart/form-data"> <table align="center"> <tr> <td align="right" width="120"><b>Nom :</b></td> <td><input type="text" name="nom" size="20" maxlength="20"></td> </tr> <tr> <td align="right"><b>Prénom :</b></td> <td><input type="text" name="prenom" size="30" maxlength="30"></td> </tr> <tr> <td align="right"><b>Sexe :</b></td> <td><input type="radio" name="sexe" value="M">M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="sexe" value="F">F</td> </tr> <tr> <td align="right"><b>Statut :</b></td> <td><select name="statut"> <option value="">- Choix - <option value="Membre">Membre <option value="Président">Président <option value="Vice-Président">Vice-Président <option value="Trésorier">Trésorier <option value="Secrétaire">Secrétaire </select> </td> </tr> <tr> <td align="right"><b>Date de Naissance :</b></td> <td><input type="text" name="date_naissance" size="10" maxlength="10"> <i>(jj/mm/aaaa)</i></td> </tr> <tr> <td align="right"><b>Vélo :</b></td> <td><input type="text" name="velo" size="50" maxlength="60" value="60 caractères maxi..." onfocus="this.value='';"></td> </tr> <tr> <td align="right" valign="top"><b>Signe Particulier :</b></td> <td><textarea cols="40" rows="4" name="signe_particulier" onkeypress="this.value=this.value.substr(0,230)" onfocus="this.value='';">230 caractères maxi...</textarea></td> </tr> <tr> <td align="right" valign="top" rowspan="2"><b>Photo :</b></td> <td><input type="file" name="fichier" accept="image/jpeg"></td> </tr> <tr> <td><font color="#ff0000"><b>Photo obligatoire<br>Image au format jpg - 103px de long sur 114px de large.</b></font></td> </tr> <tr> <td align="center" colspan="2"><input type="submit" value=" Valider "></td> </tr> </table> </form>

Voici le fichier valid_membre.php qui traite les infos du formulaire:

<?php if (isset($_FILES['fichier'])) { //$_FILES existe on récupère les infos qui nous intéressent $fichier=$_FILES['fichier']['name'];//nom réel de l'image $size=$_FILES['fichier']['size']; //poids de l'image en octets $tmp=$_FILES['fichier']['tmp_name'];//nom temporaire de l'image (sur le serveur) $type=$_FILES['fichier']['type'];//type de l'image //On récupère la taille de l'image list($width,$height)=getimagesize($tmp); if (is_uploaded_file($tmp)) //permet de vérifier si le fichier a été uplodé via http { //vérification du type de l'img, son poids et sa taille if ($type=="image/jpeg" && $size<=60000 && $width==103 && $height==114 ) { //Pour supprimer les espaces dans les noms de fichiers car celà entraîne une erreur lorsque vous voulez l'afficher $fichier = preg_replace ("` `i","",$fichier);//ligne facultative :) //On vérifie s'il existe une image qui a le même nom dans le répertoire if (file_exists('../../../images/membres/'.$fichier)) { //Le fichier existe on rajoute dans son nom le timestamp du moment pour le différencier de la première (comme cela on est sûr de ne pas avoir 2 images avec le même nom :) ) $nom_final= preg_replace("`.jpg`is",date("U").".jpg",$fichier); } else { $nom_final=$fichier; //l'image n'existe pas on garde le même nom } //on déplace l'image dans le répertoire final move_uploaded_file($tmp,'../../../images/membres/'.$nom_final); //Message indiquant que tout s'est bien passé chmod("../../../images/membres/" . $nom_final, 0644); require ('../../../inc/config.php'); mysql_connect($serveur,$login,$pass); mysql_select_db ($base); mysql_query("insert into membres VALUES ('$id', '$nom', '$prenom', '$sexe', '$statut', '$date_naissance', '$velo', '$signe_particulier', '$nom_final')"); mysql_close (); echo "Membre ajouté avec succès !<br><br>[ <a href=\"../../\">Retour au sommaire</a> ]<br> [ <a href=\"http://www.mon_site.com\">Retour au site</a> ]"; } else { //Le type mime, ou la taille ou le poids est incorrect echo "L'image ne convient pas, les dimensions ou le format ne sont pas correctes.<br>$nom_final<br>[ <A HREF=\"javascript:history.go(-1)\">Retour</A> ]"; } } } ?>

Le problème est incompréhensible, puisque le script fonctionne sous Firefox, mais pas sous IE.
De plus, j'utilise le même script dans un autre répertoire pour uploader des logos (au format gif). J'ai donc remplacé $type=="image/jpeg" par $type=="image/gif" et $nom_final= preg_replace("`.jpg`is",date("U").".jpg",$fichier); par $nom_final= preg_replace("`.gif`is",date("U").".gif",$fichier);, et là pour les logos ça fonctionne aussi bien sous IE que sous Firefox !

Bizarre non... problème avec le type ?

-------------------
Merci d'avance
Photo de telnes Message publié le mercredi 09 juillet 2008 à 11 h 06 par telnes. toujours revenir au debut - http://telnesmaster.free.fr/allhtml/index2.html - http://telnesmaster.free.fr/litetemplate - http://www.hotcontest.org
hello
fait un

print_r($_FILES['fichier']);

dans IE et FF et compart .

tiens nous au courant
Photo de carambarocaramel1 Message publié le dimanche 20 juillet 2008 à 23 h 39 par carambarocaramel1.
ça, déjà, c'est pas bon :
<option value="">- Choix -
<option value="Membre">Membre
<option value="Président">Président
<option value="Vice-Président">Vice-Président
<option value="Trésorier">Trésorier
<option value="Secrétaire">Secrétaire


D'une parce que des accents dans les values c'est VRAIMENT s'embêter pour rien, de deux parce que la balise <option> n'est pas fermée... Ffox doit fermer automatiquement mais pas IE.

Ensuite, plus bas, dans :
<tr> <td><font color="#ff0000"><b>Photo obligatoire<br>Image au format jpg - 103px de long sur 114px de large.</b></font></td> </tr> <tr> <td align="center" colspan="2"><input type="submit" value=" Valider "></td> </tr>
il faudrait modifier les TD pour les passer en colspan : <td colspan="2">....</td>
Tout le reste du tableau contient deux TD par TR. Les deux dernières lignes n'ont qu'un TD par TR.

Je pense sincérement qu'il s'agit simplement d'une erreur de conception de ton form d'upload. Le reste du code semble correct.

liste des forums liste des discussions Participer à la discussion

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.

Les 5 dernières discussions