Problème de soumission de formulaire pour upload d'image

Résolu
Gau36o Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
Gau36o Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,

Je crée pour mon site un formulaire où l'on peut ajouter 3 images (optionnelles).
Donc, j'aimerai que PHP vérifie si des images ont été envoyées (vérification s'il y a un fichier dans le champ correspondant, vérification des extensions...)

L'upload fonctionne lorsqu'on complète le champ (qu'on envoie une image) ; mais lorsque le champ reste vide, au lieu de compléter la variable $photo1 avec "blank1.png", l'erreur "Votre première photo n'est pas un fichier de type png, gif, jpg ou jpeg !" s'affiche...
Je ne trouve pas la solution pour la corriger...

Cela se produit si je remplace le premier "isset" par "!empty", ou que je remplace le premier $_FILES par $_POST...

Voici mon code :
<?php
if(isset($_FILES['form_photo1'])) {
$fichier = basename($_FILES['form_photo1']['name']);
$taille = filesize($_FILES['form_photo1']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['form_photo1']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Votre première photo n\'est pas un fichier de type png, gif, jpg ou jpeg !';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier de votre première photo est trop lourd...<br />La taille maximum des photos autorisée sur nos serveurs est de 2 Mo.';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$new_filename = md5(uniqid());
$new_fichier = $new_filename.$extension;
$fichier = $new_fichier;
if(move_uploaded_file($_FILES['form_photo1']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
$photo1 = $fichier;
}
else //Sinon (la fonction renvoie FALSE).
{
echo $erreur;
}
}
else
{
echo $erreur;
}
}
else {
$photo1 = "blank1.png";
}
?>


Avez vous des idées?

Merci pour vos réponses,
Cordialement.
A voir également:

1 réponse

clé de 12 Messages postés 141 Date d'inscription   Statut Membre Dernière intervention   1
 
j'ai fait un truc a peu près pareil pour8 images:

dans le page accueil :
<input type="file" name="logo_E" id="logo_E" /><br /></p>
<p>7 . <label for="mon_fichier">Logo Partenaires :(200 Ko max)</label><br /></p>
<p> <input type="file" name="logo_P1" id="logo_P1" /><input type="text" name="site1" value="1-Nom ou Site" id="titre1" onfocus="value=''"><br /></p>
<p> <input type="file" name="logo_P2" id="logo_P2" /><input type="text" name="site2" value="2-Nom ou Site" id="titre2" onfocus="value=''"/><br /></p>
<p> <input type="file" name="logo_P3" id="logo_P3" /><input type="text" name="site3" value="3-Nom ou Site" id="titre3" onfocus="value=''"/><br /></p>
<p><input type="file" name="logo_P4" id="logo_P4" /><input type="text" name="site4" value="4-Nom ou Site" id="titre4" onfocus="value=''"/><br /></p>
<p><input type="file" name="logo_P5" id="logo_P5" /><input type="text" name="site5" value="5-Nom ou Site" id="titre5" onfocus="value=''"/><br /></p>
<p><input type="file" name="logo_P6" id="logo_P6" /><input type="text" name="site6" value="6-Nom ou Site" id="titre6" onfocus="value=''"/><br /></p>
<p><input type="file" name="logo_P7" id="logo_P7" /><input type="text" name="site7" value="7-Nom ou Site" id="titre7" onfocus="value=''"/><br /></p>
<p> <input type="file" name="logo_P8" id="logo_P8" /><input type="text" name="site8" value="8-Nom ou Site" id="titre8" onfocus="value=''"/><br /></p>
<input type="submit" name="submit" value="Envoyer" />

et pour la version script
while ($a<9)
{
$erreur="";
//transfert logo partenaires////
////Formatage nom fichier //////
echo "Files :".$_FILES['logo_P'.$a]['tmp_name']."<br>";
if (isset($_FILES['logo_P'.$a]['tmp_name']))
{
$nom=strtolower($_POST['site'.$a]);
$nom = strtr($nom,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$nom = preg_replace('/([^.a-z0-9]+)/i', '-', $nom);
$extension_upload = strtolower( substr( strrchr($_FILES['logo_P'.$a]['name'], '.') ,1) );
if (in_array($extension_upload,$extensions_valides) )
{
$rename=$nom.".".$extension_upload;
echo "rename :".$rename."<br>";
$origine=$_FILES['logo_P'.$a]['tmp_name'];
//$taille = filesize($origine);
//if ($_FILES['logo_P'.$a]['error'] > 0)
//{
//$erreur= "Erreur lors du transfert";
//}
//if($taille>$taille_maxi)
//{
// $erreur = 'Le fichier '.$origine.'est trop gros...';
//}

$dest="../equipe/".$ville."/".$rename;
echo "Upload ".$origine." en cours VERS ".$dest."<br>";
$move = move_uploaded_file($origine,$dest);
echo "Transfert ".$origine." terminé";

}
//if ($erreur!="")
//{
//echo $erreur." l'UPLOAD de ".$origine."a échoué";
//}

}
$a++;
}

Voili, et ça marche
0
Gau36o Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse, je vais essayer ça! :-)

(Et surtout comprendre le script ^^)
0