Alic3s Posté 10 Novembre 2006 Posté 10 Novembre 2006 Bonjour à tous, j'ai adapté et codé un formulaire d'upload d'image, il upload bien, mais il upload tout !! il prend pas en compte mais instruction sur la taille et l'extension, tout y passe sans erreur, quelqu'un peut m'aider ? je seche... merci d'avance. <?// Sessions session_start(); if (!$_SESSION["membre"]) { header("Location:index.php"); }// Taille maximum$MAX_FILE_SIZE = 500000;// Dossier de destination du fichier$folder = "photos_bg/";if ($fichier != ""){// Tableau array des différents types$allowed_types = array("image/bmp", "image/gif", "image/pjpeg", "image/jpeg", "image/jpg");// Variables récupérée par methode POST du formulaires$fname = $HTTP_POST_FILES['fichier']['name'];$ftype = $HTTP_POST_FILES['fichier']['type'];$fsize = $HTTP_POST_FILES['fichier']['size'];$ftmp = $HTTP_POST_FILES['fichier']['tmp_name'];// Diverses test afin de savoir si :// Le format de fichier correspond à notre tableau arrayif(!in_array($ftype, $allowed_types)){$error = 1;}// La taille du fichier n'est pas dépasséeif($fsize > $MAX_FILE_SIZE){$error = 2;}// Le fichier n'existe pas déjàif(file_exists($folder."m_".$fname)){$error = 3;} include("misc.inc"); $db = mysql_connect($host,$user,$password) or die ("Erreur de connection"); mysql_select_db($database,$db) or die ("Erreur de connection a la base"); $query3 = "SELECT * FROM bg_consults WHERE bgc_pseudo ='".$_SESSION["membrelogin"]."'"; $result3 = mysql_query($query3) or die('Erreur SQL !<br>'.$query3.'<br>'.mysql_error()); while($r2 = mysql_fetch_array($result3)) { $nomp = $r2["bgc_nom"]; $prenomp = $r2["bgc_prenom"]; $idp = $r2["bgc_id"]; $newname = "$nomp$prenomp$idp.jpg";// Si tout va bien, c'est bien dérouléif(copy($ftmp,''.$folder.''.$newname.'')) {$error = 0;}// Switch servant simplement à la gestion des erreuresswitch($error){case'0':echo("Fichier correctement envoyé.");break;case'1':echo("Format de fichier incorrecte.");break;case'2':echo("Fichier trop volumineux.");break;case'3':echo("Fichier déjà existant.");break;echo $newname; $query2 = "UPDATE `bg_consults` SET `bgc_photo` = '$newname' WHERE `bgc_id` = '$idp'"; $result2 = mysql_query($query2) or die('Erreur SQL !<br>'.$sql2.'<br>election impossible [type 2]. La table contenant votre id ne répond plus. Réessayez et/ou prévenez le Webmaster.<br>'.mysql_error()); }}}?><link href="styles.css" rel="stylesheet" type="text/css"><form enctype="multipart/form-data" action="upphoto.php" method="post"> <table width="459" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td colspan="4"><strong class="txt">.:: Ajout de photo </strong></td> </tr> <tr> <td height="45" colspan="3"><span class="txt">Fichier :</span> </td> <td width="368"><input name="fichier" type="file" class="txt"></td> </tr> <tr> <td width="15"> </td> <td width="38"> </td> <td width="38" class="mini"> </td> <td class="mini">Format accepté : .jpg, .jpeg, .bmp, .gif.<br> Maximum 400ko </td> </tr> <tr> <td height="42"> </td> <td> </td> <td> </td> <td><div align="right"> <input name="submit" type="submit" value="Envoyer"> </div></td> </tr> </table> <br></form>
baboon Posté 11 Novembre 2006 Posté 11 Novembre 2006 Bonjour, A premiere vue, et sans trop rentrer dans le détail, tu fais bien les tests pour vérifier taille, extension , etc.... Par contre tu upload ton fichier sans tenir compte du résultat des tests que tu effectues !!! donc dans tous les cas tu uploaderas... Esssaye de : Initialiser la variable $error à 0 en début de script : $error = 0; Pour ensuite ne faire l'upload que si effectivement tous c'est bien déroulé : // Si tous c'est bien déroulé error = 0, et on peut tenter d'uploaderif ($error==0) { if(copy($ftmp,''.$folder.''.$newname.'')) {$error = 0;}} Pour Info, le code : // Switch servant simplement à la gestion des erreuresswitch($error){case'0':echo("Fichier correctement envoyé.");break;case'1':echo("Format de fichier incorrecte.");break;case'2':echo("Fichier trop volumineux.");break;case'3':echo("Fichier déjà existant.");break; N'est pas là pour servir à la gestion d'erreur, mais servir simplement à l'affichage du compte rendu d'erreur, $error !!! Pour finir : Fermer le switch avec une accolade...avant la requete... case'3':echo("Fichier déjà existant.");break;}echo $newname; Vérifier juste avant de fermer le script php à quoi correspondent les 3 accolades fermantes !!! }}}?> Bon Week end
Alic3s Posté 11 Novembre 2006 Auteur Posté 11 Novembre 2006 Je te remercie mille fois, tu es un dieu, dans ma stupidité et mes yeux collés je n'ai pas vu des erreurs vraiments bêtes, merci merci merci. Tout est okay
baboon Posté 12 Novembre 2006 Posté 12 Novembre 2006 C'est le but du forum, si je peux aider, alors je suis satisfait... Merci pour ta réponse...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant