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

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

clé de 12 Messages postés 139 Date d'inscription samedi 19 juin 2010 Statut Membre Dernière intervention 3 novembre 2024 1
2 févr. 2015 à 22:26
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 lundi 2 février 2015 Statut Membre Dernière intervention 20 mai 2017
Modifié par Gau36o le 2/02/2015 à 22:39
Merci pour ta réponse, je vais essayer ça! :-)

(Et surtout comprendre le script ^^)
0