Upload dans un formaulaire

Signaler
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
-
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
-
Bonjour,

Je souhaiterai intégrer un upload de fichier dans un formulaire.
Le souci est que je n'arrive pas à obliger les gens à mettre leur fichier.

J'ai fait un formulaire en SPry. Si ils se plantent dans les données ça bloque mais pas pour le fichier. Qu'ils l'intègrent ou pas, le formulaire est validé.

Je souhaiterai que l'inscription ne se fasse pas si je n'ai pas le fichier.
La vérification du fichier uniquement les pdf et jpeg ne fonctionne pas non plus.

<?php
$uploaddir = 'uploads/2012';
$uploadfile = $uploaddir . basename($_FILES['certificat']['name']);
$uploaddate = date(HisdmY).".txt";
$_FILES['certificat']['type'];
echo '';
if (move_uploaded_file($_FILES['certificat']['tmp_name'], $uploadfile.$uploaddate))


?>
<?php
//On fait un tableau contenant les extensions autorisées.
//Comme il s'agit d'un avatar pour l'exemple, on ne prend que des extensions d'images.
$extensions = array('.jpg', '.jpeg', '.pdf');
// récupère la partie de la chaine à partir du dernier . pour connaître l'extension.
$extension = strrchr($_FILES['certificat']['name'], '.');
//Ensuite on teste
if( in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type jpg, jpeg ou pdf...';
}
?>

Merci par avance.

4 réponses

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
18
BONJOUR


<?php 
isset($_POST['nom']) && !empty ($_POST['nom']) ? $nom = $_POST['nom'] : $nom  = '';
isset($_POST['prenom']) && !empty ($_POST['prenom']) ?  $prenom = $_POST['prenom'] : $prenom = '';

$form='<form method="post" action="" enctype="multipart/form-data">
Nom : 

Prenom : 


Fichier : 


';

/*le repertoire existe , sinon creation*/

 $uploaddir1 = 'uploads/2012/';
 if(is_dir($uploaddir1)){
 }else{
 mkdir($uploaddir1,0705);
 }

/*erreur vide au depart*/ 
$erreur=''; 
  

/******************************************************************************/
    
/*le file est soumis*/
if(isset($_FILES['certificat']) && !empty($_FILES['certificat']['name'])){ 
   
    $uploaddir1 = 'uploads/2012/';   
    $uploadfile = $uploaddir1 . basename($_FILES['certificat']['name']); 
    
    /*recuperaton de l extension*/
    $extension = strtolower(end(explode('.',$_FILES['certificat']['name']))); 
    $extension_aut = array('jpg','jpeg','pdf'); /* //sans le point !!!! */
    if(!in_array($extension,$extension_aut,true)){ 
    $erreur .= 'UNIQUEMENT DU JPG, JPEG OU PDF ... 
'; 
    }else{
        
        move_uploaded_file($_FILES['certificat']['tmp_name'], $uploadfile); 
        
        /*debug affiche du resultat*/
        echo '';
        print_r($_POST);
        print_r($_FILES);
        echo '

';
    
        echo '<hr>Lien au fichier : [ ['.$uploadfile.' Voir le fichier] ]<hr>';
        
        /*un traitement genre mail ...*/
    
    }


} else {

    $erreur .= 'VOUS DEVEZ UPLOADER UN FICHIER OBLIGATOIRE DE TYPE JPG, JPEG OU PDF ... 
'; 
   
} 


echo isset($erreur) ? $erreur : '';
echo $form;

?>  


LA BASE ...


Bonne programmation !
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012

Bonjour,

Merci cod57 et vraiment désolé pour ces compliments tardifs.
Je reviens vers toi car je viens de tester ton code qui fonctionne impécable. Malheureusement, il n'est pas compatible avec ma page.
J'ai une page formulaire qui envoi les données à une page de traitement.
Cette page de traitement indique bien que le fichier n'a pas été ulpoader mais il indique aussi que les données ont bien été traité.
En fait il n'y a pas de vérif des données sur ma page de traitement car je me fiais au formulaire en spry.
Le mieux serait que je remettes le tout sur une seule page?
Que peux tu me conseiller?


Page de formulaire en html:




inscription en ligne

body {
background-image: url(../images/feuille_verte.jpg);
}
#entete {
text-align: center;
height: 250px;
width: 550px;
margin-right: auto;
margin-left: auto;
color: #FFF;
border: medium solid #FF0;
font-size: 20px;
line-height: 35px;
}
#espace {
height: 20px;
width: 550px;
margin-right: auto;
margin-left: auto;
}
#line {
margin-right: auto;
margin-left: auto;
text-align: center;
}
#paypal {
height: 50px;
width: 750px;
margin-right: auto;
margin-left: auto;
text-align: center;
font-weight: bold;
text-decoration: underline;
}
#espace2 {
height: 20px;
width: 550px;
margin-right: auto;
margin-left: auto;
}
#boutton_menu {
height: 30px;
width: 1000px;
margin-right: auto;
margin-left: auto;
background-color: #333;
text-align: center;
}
.espace {
margin-right: 25px;
}
#boutton_menu ul {
list-style-type: none;
margin: 0px;
padding-top: 5px;
padding-left: 0px;
}
#boutton_menu ul a {
color: #FFF;
text-decoration: none;
}
#boutton_menu ul a:hover {
color: #09F;
}
#boutton_menu ul li {
display: inline;
color: #FFF;
}
#espacesousmenu {
height: 30px;
width: 500px;
margin-right: auto;
margin-left: auto;
}
#listesponsors {
height: 800px;
width: 800px;
text-align: center;
margin-right: auto;
margin-left: auto;
}
.certificat {
text-align: right;
}
#listesponsors #form1 p a {
color: #F00;
}














Organiser par

9 Septembre 2012

à 8H30

13 et 25Km












[../index.html Accueil]
[../acces.html Accès]
[../inscription.html Inscription]
[../infoscourse.html Infos Course]
[../plancourse.html Plan Course]
[../engagements.html Engagements]
[../sponsors.html Sponsors]
[../resultats.html Résultats]
[../livrorseul/index.php Livre d'Or]
Infos
[mailto:stephane@.fr Contact]








Attention le formulaire n'est valable Que pour un paiement par Paypal









Monsieur




Madame




Mademoiselle


Effectuez une sélection.



Nom :

Une valeur est requise.



Prenom :

Une valeur est requise.



Date de Naissance :

Une valeur est requise.Format non valide. Exemple 00/00/0000



Adresse :

Une valeur est requise.



Code Postal:

Une valeur est requise.Format non valide.



Ville:

Une valeur est requise.



Pays

France
Angleterre
Belgique
Allemagne
Suisse
Espagne

Sélectionnez un élément.



Téléphone:

Une valeur est requise.Format non valide.



Email:

Une valeur est requise.Format non valide.



Club:




Ville du club:




Certificat


:


3,5Mo Max


Parcours Choisi:


25Km


13Km


Effectuez une sélection.


[../Fichier/engagement.pdf Engagement du coureur]




J'ai lu et j'accepte "l'engagement du coureur"
Vous devez validez.


























var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2");
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4", "date", {format:"dd/mm/yyyy"});
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3");
var sprytextfield5 = new Spry.Widget.ValidationTextField("sprytextfield5", "zip_code", {format:"zip_custom", pattern:"00000"});
var sprytextfield6 = new Spry.Widget.ValidationTextField("sprytextfield6");
var sprytextfield7 = new Spry.Widget.ValidationTextField("sprytextfield7", "phone_number", {format:"phone_custom", pattern:"00 00 00 00 00", useCharacterMasking:true});
var sprytextfield8 = new Spry.Widget.ValidationTextField("sprytextfield8", "email");
var sprytextfield9 = new Spry.Widget.ValidationTextField("sprytextfield9", "none", {isRequired:false});
var sprytextfield10 = new Spry.Widget.ValidationTextField("sprytextfield10", "none", {isRequired:false});
var spryradio1 = new Spry.Widget.ValidationRadio("spryradio1");
var spryselect1 = new Spry.Widget.ValidationSelect("spryselect1");
var sprycheckbox1 = new Spry.Widget.ValidationCheckbox("sprycheckbox1");
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1");
var spryradio2 = new Spry.Widget.ValidationRadio("spryradio2");




Ma page de traitement en php:







Traitement de votre dossier

.centrer {
text-align: center;
}
.centrerbontonpaypal {
text-align: center;
}
.paypal {
text-align: center;
margin-right: auto;
margin-left: auto;
}
.centrer {
text-align: center;
}





Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
18
bonjour

oui tu devrais refaire ... en effet, comme je le constate tu veux faire une écriture dans une table !
tu pourrais simplement mettre une variable
session à true si tout est ok est permettre

<?php
session_start();
$_SESSION['check']=false;

/*ici des checks des posts ...*/


if(isset($_SESSION['check']) && $_SESSION['check']===true){

//ON INSERE

echo 'Merci ...!';

unset($_SESSION['check']);
}else{
}
/*fin de page*/
?>


l'insertion dans la bdd puis la détruire juste après le traitement du mysql_query ou exec() si tu utilises pdo



Bonne programmation !
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012

Olala, il va falloir que je m'y remette!!!
J'ai une erreur à cause de session start.
Je m'y pencherai cette semaine.
Par contre bizzare tout s'affiche.

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /homepages/31/d264748446/htdocs/Rev7trail/inscription/traitement2.php:8) in /homepages/31/.../traitement2.php on line 31

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homepages/31.../traitement2.php:8) in /homepages/31/.../traitement2.php on line 31

Array
(
[civil] => mr
[nom] => qq
[prenom] => qq
[naissance] => 22/12/2012
[adresse] => qq
[cp] => 22222
[ville] => qq
[pays] => fr
[tel] => 22 22 22 22 22
[mail] => qq@qq.qq
[club] =>
[villeclub] =>
[MAX_FILE_SIZE] => 3600000
[parcours] => 25Km
[condition] => on
[button] => Envoyer
)
Array
(
[certificat] => Array
(
[name] => 17AA4CD0.jpg
[type] => image/jpeg
[tmp_name] => /tmp/phpKHtnlZ
[error] => 0
[size] => 112544
)

)

Lien au fichier : [ Voir le fichier ]