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

Résolu/Fermé
Signaler
Messages postés
14
Date d'inscription
lundi 2 février 2015
Statut
Membre
Dernière intervention
20 mai 2017
-
Messages postés
14
Date d'inscription
lundi 2 février 2015
Statut
Membre
Dernière intervention
20 mai 2017
-
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.

1 réponse

Messages postés
112
Date d'inscription
samedi 19 juin 2010
Statut
Membre
Dernière intervention
7 octobre 2021

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
Messages postés
14
Date d'inscription
lundi 2 février 2015
Statut
Membre
Dernière intervention
20 mai 2017

Merci pour ta réponse, je vais essayer ça! :-)

(Et surtout comprendre le script ^^)
0