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 -
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 :
Avez vous des idées?
Merci pour vos réponses,
Cordialement.
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:
- Problème de soumission de formulaire pour upload d'image
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Image iso - Guide
- Youtube upload - Télécharger - Diffusion
1 réponse
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
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
(Et surtout comprendre le script ^^)