IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Validation d'un formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Par défaut Validation d'un formulaire
    Bonjour à tous
    Je sais que les questions doivent être posées tous les jours.
    J'ai fait un formulaire, mais la difficulté qu'il représente pour moi et que j'y intègre l'envoi de pièce jointe.
    J'aimerai, si possible, que vous m'aidiez à le valider, car j'ai l'impression que mes vérifs semblent ne pas être correctes !
    Je vous mets un bout de mon code et merci bcp de votre aide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    <?php 
    $success=false;
    $message="";
    $verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!"; // INIT DES VARIABLES 
    if(!isset($_POST['societe'])) $societe=""; else $societe=htmlentities(addslashes($_POST['societe'])); 
    ...
    if(!isset($_FILES['fichier'])) $fichier=""; else $fichier=$_FILES['fichier'];
     
    $name_file = $_FILES['fichier']['name']; 
    $source = $_FILES['fichier']['tmp_name'];
    $typemime = $_FILES['fichier']['type']; 
    $taille = $_FILES['fichier']['size'];
     
    // extensions autorisées
    $extensions_ok = array('txt', 'doc', 'rtf', 'pdf'); 
    // la taille maximale du fichier en octets, ici 2mo 
    $taille_max = 2097152; 
     
    move_uploaded_file($source, "./".$name_file); 
     
    //----------------------------------
    // Construction de l'entête
    //----------------------------------
    if (($fichier!="")&&($tel!="")&&($nom!="")&&($prenom!="")&&($mail!="")&&($sujet!="")) { //si champs vides
    if(($mail) && (preg_match($verif, $mail))){ // si le mail est bon
    if( !in_array( substr(strrchr($_FILES['fichier']['name'], '.'), 1), $extensions_ok ) ) {  //si bon format
    if( file_exists($source) && $taille > $taille_max) { // si taille autorisée
    if($_FILES['fichier']!="")
    {
    $boundary = "-----=".md5(uniqid(rand()));
    $header = "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
    $header .= "\r\n";
     
    $msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";
     
    $msg .= "--$boundary\r\n";
     
    $msg .= "Content-Type: $typemime; charset=\"iso-8859-1\"\r\n";
    $msg .= "Content-Transfer-Encoding:8bit\r\n";
    $msg .= "\r\n";
    $msg .= "Raison sociale : $societe";
    $msg .= "\r\n";
    $msg .= "Nom : $nom";
    $msg .= "\r\n";
    $msg .= "Prénom : $prenom";
    $msg .= "\r\n";
    $msg .= "Statut : $sujet";
    $msg .= "\r\n";
    $msg .= "Adresse : ".$_POST['adresse1']."";
    $msg .= "\r\n";
    $msg .= "Téléphone : $tel";
    $msg .= "\r\n";
    $msg .= "Portable : $portable";
    $msg .= "\r\n";
    $msg .= $_POST['message1'];
    $msg .= "\r\n";
     
    if($name_file!="")
    {
    $file = $name_file;
    $fp = fopen($file, "rb");  
    $attachment = fread($fp, filesize($file));
    fclose($fp);
     
    $attachment = chunk_split(base64_encode($attachment));
     
     
    $msg .= "--$boundary\r\n";
    $msg .= "Content-Type: $typemime; name=\"$file\"\r\n";
    $msg .= "Content-Transfer-Encoding: base64\r\n";
    $msg .= "Content-Disposition: attachment; filename=\"$file\"\r\n";
    $msg .= "\r\n";
    $msg .= $attachment . "\r\n";
    $msg .= "\r\n\r\n";
    $msg .= "--$boundary--\r\n";
    }
     
    $destinataire = 'toto@neuf.fr';
    $expediteur   = $_POST['mail'];
    $reponse      = $expediteur;
     
    mail($destinataire, 'Envoi de fichier', $msg,
         "Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);
     
    }
     
    if($name_file!="")
    {
    unlink($name_file);
    }
    print("<br>\n");
     
     
    		//----------------------------------
    		// Construction de l'entête
    		//----------------------------------
    		$success=true;
    		$message =  "Votre demande $prenom $nom a &eacute;t&eacute; post&eacute;e avec succ&egrave;s ! <br /> 
    		Elle sera trait&eacute;e dans les meilleurs d&eacute;lais.<br /> 
    		Nous vous remercions de votre visite !";
    		}else{
    		$sucess = false;
    		$message = 'Extension non autorisée !';  
    		}
    		}else{
    		$sucess = false;
    		$message = 'Votre fichier doit faire moins de 2mo !'; 
    		}
    		}else{
    		$verif=false;
    		$message= "Cette adresse Email n'est pas valide";
    		}
    		}else{ 
    		$success = false;
    		$message = "Merci de remplir les champs obligatoires";
    		}
     
    ?>
    Le formulaire semble partir quand meme ou alors bloque sur le meme message d'erreur : taille sup à 2mo
    merci !

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 717
    Par défaut
    essaye de simplifer ton formulaire en testant uniquement un champ et ensuite, au fur et à mesure que ça fonctionne, rajoute les autres vérifications une après l'autre et teste les à chaque fois

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Par défaut
    merci de ta réponse!
    en fait ce qui bloque c'est la vérification d'extension de fichier
    J'ai apporté qques modifs, les voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    $name_file = $_FILES['fichier']['name'];  
    $source = $_FILES['fichier']['tmp_name']; 
    $typemime = $_FILES['fichier']['type'];  
    $taille = $_FILES['fichier']['size']; 
     
    // extensions autorisées 
    $extensions_ok = array('txt', 'csv', 'doc', 'rtf', 'pdf');  
    // Configurez la taille maximale du fichier en octets, ici 2mo  
    $taille_max = 2097152;  
    // vérifications  
        if( !in_array( substr(strrchr($_FILES['fichier']['type'], '.'), 1), $extensions_ok ) )  
        {  
            // message d'erreur 
            $message = 'Extension non autorisée !';  
        }  
        elseif( file_exists($source) && $taille > $taille_max)  
        {  
            // réponse d'erreur 
            $message = 'Votre fichier doit faire moins de 2mo !';  
            // ----------------- Fin configuration --------------------  
        }  
    move_uploaded_file($source, "./".$name_file);  
     
    //---------------------------------- 
    // Construction de l'entête 
    //---------------------------------- 
    if ($name_file!=""&&$tel!=""&&$nom!=""&&$prenom!=""&&$mail!=""&&$sujet!="") { //si champs non vides 
    if($mail && preg_match($verif, $mail)){ // si le mail est bon 
     
    if($_FILES['fichier']!="") // si le fichier existe 
    {
    Mais si je veux envoyer un .jpg, ça passe quand meme
    Une idée de ce qui ne va pas ?
    merci!

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 717
    Par défaut
    je crois que tu utilise "type" pour analyser l'extension au lieu de "name"

    n'oublie pas qu'un pirate peux mettre par exemple une image avec une extension "pdf", il faudra que tu vérifies que celà ne possera pas de problème à l'utilisation de ce fichier

  5. #5
    Membre éprouvé Avatar de BGDC
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 102
    Par défaut
    Salut,

    et si tu faisais un echo de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    substr(strrchr($_FILES['fichier']['type']
    histoire de voir deja ce que tu as dedans ?

    Edit: Pour moi, il y a juste l'extension du fichier dans $_FILES['fichier']['type'] sans le point.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Par défaut
    J'obtiens text/plain

  7. #7
    Membre éprouvé Avatar de BGDC
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 102
    Par défaut
    Re: Pour moi, il y a juste l'extension du fichier dans $_FILES['fichier']['type'] sans le point. en fait JPG et pas .JPG

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/04/2006, 09h42
  2. Javascript : Empecher la validation d'un formulaire
    Par otb82 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/01/2006, 09h46
  3. Ouvrir une popup lors de la validation d'un formulaire
    Par pod1978 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/11/2005, 15h47
  4. Vérification de validation d'un formulaire
    Par tom06440 dans le forum Langage
    Réponses: 8
    Dernier message: 21/09/2005, 14h29
  5. Réponses: 11
    Dernier message: 16/09/2004, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo