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 de formulaire


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 152
    Points : 57
    Points
    57
    Par défaut Validation de formulaire
    Bonjour à tous,

    J'ai un formulaire, celui-ci fonctionne, mais je voudrai que celui ci me soit envoyer seulement quand la personne qui m'a envoyer le mail valide un lien reçu dans sa boite mail.
    Je sais pas si je suis clair dans mon explication.
    Voici mon formulaire :

    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
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    <?php
     
    if (isset($_POST["envoi_message"])) { //****** Le formulaire d'envoi de message a été validé
     
    	//====Cette ligne est à enlever dans le formulaire final, sous peine que le formulaire soit utilisé par des spameurs !
     	//$mail_destinataire = $_POST["mail_destinataire"];
    	//====Une fois la ligne ci-dessus enlevée, enlever les commentaires au début de la ligne ci-dessous pour écrire l'adresse du destinataire (vous) en dur dans le programme.
    	$mail_destinataire = "Mail@mail.fr"; //=====Mon adresse électronique
     
    	//=====Vérification de l'existence d'une pièce jointe.
    	if ($_FILES['piecejointe']['name']<>"") $ispiece = true; else $ispiece = false;
     
    	//=====Vérification de l'adresse de destination.
    	if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail_destinataire)) $passage_ligne = "\r\n"; else $passage_ligne = "\n";
     
    	//=====Récupération du mail, du nom de l'expéditeur et du sujet.
    	$mail_expediteur = $_POST["mail_expediteur"];
    	$nom_expediteur = $_POST["nom_expediteur"];
    	$sujet = stripslashes($_POST["sujet"]);
     
    	//=====Déclaration des messages au format texte et au format HTML.
    	$message_txt = "Salut à tous, voici un e-mail envoyé par un script PHP.";
     
    	$msg_body  = "<font color='#666666'><em><p>Mail de l'expéditeur : </font><strong>".$mail_expediteur."</strong><br>";
    	$msg_body .= "<font color='#666666'>Nom de l'expéditeur : </font><strong>".$nom_expediteur."</strong></p>";
    	$msg_body .= "<p><font color='#666666'>La personne ci-dessus vous a contacté(e) à partir de votre site. Si vous désirez lui répondre, il vous suffit de répondre à ce message. Voici le contenu de son message :</font></em></p><br />";
     
    	$message_tape = htmlspecialchars($_POST["texte_message"], ENT_QUOTES); 
    	$retourligne   = array("\r\n", "\n", "\r");
    	$remplace = '<br />';
    	$msg_body .= "<p>".str_replace($retourligne, $remplace, $message_tape)."</p>";
    	$msg_body = stripslashes($msg_body); 
     
    	$message_html = "<html><head></head><body>".$msg_body."</body></html>";
     
    	//=====Transfert de la pièce jointe sur le serveur.
    	if ($ispiece) { //===traitement de la pièce jointe seulement si le champ du formulaire a été renseigné
    		$uploaddir = './'; //===Chemin du dossier de votre serveur web dans lequel sera transféré la pièce jointe avant d'être traitée
    		$upload_file = $uploaddir . $_FILES['piecejointe']['name']; 
    		if (move_uploaded_file($_FILES['piecejointe']['tmp_name'], $upload_file)) {
    			$ext = explode(".", basename($_FILES['piecejointe']['name'])); 
    			switch($ext[1]) { 
    				default:       
    				$attach_type =  "application/octet-stream";  
    			break; 
    				case "gz":    
    				$attach_type =  "application/x-gzip";  
    			break; 
    				case "tgz":   
    				$attach_type =  "application/x-gzip";  
    			break; 
    				case "zip":   
    				$attach_type =  "application/zip"; 
    			break; 
    				case "pdf":   
    				$attach_type =  "application/pdf"; 
    			break; 
    				case "png":   
    				$attach_type =  "image/png"; 
    			break; 
    				case "gif":   
    				$attach_type =  "image/gif"; 
    			break; 
    				case "jpg": 
    				case"jpeg":   
    				$attach_type =  "image/jpeg"; 
    			break; 
    				case "txt":   
    				$attach_type =  "text/plain"; 
    			break; 
    				case "htm":   
    				$attach_type =  "text/html";   
    			break; 
    				case "html":  
    				$attach_type =  "text/html"; 
    			break; 
    			} 
    			$attach_name = $_FILES["piecejointe"]["name"]; 
    		} 
    		//=====Lecture et mise en forme de la pièce jointe.
    		if (file_exists($upload_file)) { 
    			$fichier = fopen($upload_file, "r");
    			$attachement = fread($fichier, filesize($upload_file));
    			$attachement = chunk_split(base64_encode($attachement));
    			fclose($fichier);
    		}
    	}
    	//=====Création de la boundary.
    	$boundary = "-----=".md5(rand());
    	$boundary_alt = "-----=".md5(rand());
     
    	//=====Création du header de l'e-mail.
    	$header = "From: ".$nom_expediteur." <".$mail_expediteur.">".$passage_ligne;
    	$header.= "Reply-To: ".$nom_expediteur." <".$mail_expediteur.">".$passage_ligne;
    	$header .= "MIME-Version: 1.0".$passage_ligne;
    	$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
     
    	//=====Création du message.
    	$message = $passage_ligne."--".$boundary.$passage_ligne;
    	$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
    	$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
    	//=====Ajout du message au format texte.
    	$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
    	$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
    	$message.= $passage_ligne.$message_txt.$passage_ligne;
    	//==========
     
    	$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
     
    	//=====Ajout du message au format HTML.
    	$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
    	$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
    	$message.= $passage_ligne.$message_html.$passage_ligne;
    	//==========
     
    	//=====On ferme la boundary alternative.
    	$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
    	//==========
    	$message.= $passage_ligne."--".$boundary.$passage_ligne;
     
    	//=====Ajout de la pièce jointe.
    	if ($ispiece) { //===Ajout de la pièce jointe seulement si le champ du formulaire a été renseigné
    		$message.= "Content-Type: ".$attach_type."; name=\"".$attach_name."\"".$passage_ligne;
    		$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
    		$message.= "Content-Disposition: attachment; filename=\"".$attach_name."\"".$passage_ligne;
    		$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
    		$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
    	}
    	//=====Envoi de l'e-mail.
    	mail($mail_destinataire,$sujet,$message,$header);
    	//========== 
    	echo "<script>alert('Le message a bien ete expedie.')</script>"; 
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
    <html>
    <head>
    <title>Formulaire de contact</title>
     
     
    <script type="text/javascript">
    	<!--
    	function VerificationFormulaire(frm) {
    		if (frm.elements['mail_destinataire'].value == "") {
    			alert('L\'adresse électronique est obligatoire !');
    			frm.elements['mail_destinataire'].focus();
    			return false;
    		}
    		if (frm.elements['mail_expediteur'].value == "") {
    			alert('L\'adresse électronique est obligatoire !');
    			frm.elements['mail_expediteur'].focus();
    			return false;
    		}
    		if (frm.elements['sujet'].value == "") {
    			alert('Le sujet ne peut pas être vide.');
    			frm.elements['sujet'].focus();
    			return false;
    		}
    		adresse = frm.elements['mail_destinataire'].value;
    		var place = adresse.indexOf("@",1);
    		var point = adresse.indexOf(".",place+1);
    		if ( (place > -1)&&(adresse.length >2)&&(point > 1)) {
    			return true;
    		} else {
    			alert('Votre adresse électronique ne paraît pas valide, veuillez la ressaisir !');
    			frm.elements['mail_destinataire'].focus();
    			return false;
    		}
    		adresse = frm.elements['mail_expediteur'].value;
    		var place = adresse.indexOf("@",1);
    		var point = adresse.indexOf(".",place+1);
    		if ( (place > -1)&&(adresse.length >2)&&(point > 1)) {
    			return true;
    		} else {
    			alert('Votre adresse électronique ne paraît pas valide, veuillez la ressaisir !');
    			frm.elements['mail_expediteur'].focus();
    			return false;
    		}
    		return true;
    	}
    	//-->
    </script>
    </head>
     
    <body>
    <form method="post" onsubmit="return VerificationFormulaire(this)" enctype="multipart/form-data">
     
     
    <p>
      <input name="mail_expediteur" type="text" required="required" id="mail_expediteur" placeholder="Adresse mail de contact valide*" value="" size=60 maxlength=60 />
    </p>
    <div class="margin_bottom_10"></div>
    <p>
      <input name="nom_expediteur" type="text" class="text-input" id="nom_expediteur" placeholder="Pseudo nom ou prenom" value="" size=60 maxlength=60 />
    </p>
    <div class="margin_bottom_10"></div>
    <p>
      <input name="sujet" type="text" class="text-input" id="sujet" placeholder="Sujet du contact" value="" size=60 maxlength=60 />
    </p>
    <div class="margin_bottom_10"></div>
    <p>
      <textarea name="texte_message" cols="60" rows="10" class="text-input" placeholder="Votre message"></textarea>
    </p>
    <div class="margin_bottom_10"></div>
    <p>
     <center>  
       <p>
         <input name="piecejointe" type="file" size="60" class="w750" />
       </p>   
         <p>
        </p>
         <p>
           <input name="textfield" type="text" required="required" id="textfield" placeholder="Captcha ecrire le resultat en chiffre 10-deux =" pattern="8" size=60 maxlength=60 />
         </p>
       </p>
     </center>
    </p>
    <input type="reset" name="reset2" id="reset2" value="Effacer formulaire">
    <input type="submit" name="envoi_message" class="button" id="submit_btn" value="Envoyer le message"/>
    </form>
    </body>
    </html>
    Merci par avance de votre aide.

    @+ Filou

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par filou80 Voir le message
    ...Je sais pas si je suis clair dans mon explication....
    RELIS ta phrase, et tu verras que NON.
    Il manque certainement des mots et la ponctuation.

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je vais tenter une traduction de la question : C'est un formulaire qui permet d'envoyer un mail au gestionnaire du site, mais il faudrait une confirmation de la validité du mail du posteur. Pour ça, le script doit envoyer un mail contenant un lien/code/token au posteur qu'il doit cliquer/recopier pour que le formulaire soit valide et accepte d'envoyer le mail.

    Chuis pas sûre que ce soit beaucoup plus clair en fait
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Invité
    Invité(e)
    Par défaut
    Oui, j'avais aussi "vaguement" compris.
    Mais il faudrait plus de précision, et de logique.

    Car moi, ça me gonflerai de devoir systématiquement cliquer sur un lien de validation à CHAQUE FOIS.

    Ce lien (demande de validation de l'adresse email) ne doit exister QUE si c'est la PREMIERE FOIS que cet adresse email est utilisée.
    Sans compter ceux qui ne prendrons pas la peine de le faire, ou qui ne VERRONS PAS qu'il faut cliquer sur un lien !

    Par conséquent, il faut une base de données, et enregistrer chaque adresse email dans une TABLE *, avec au moins 3 colonnes : "email", "mail_valid" (booléen ou 0/1) et "mail_token".

    "mail_token" serait justement DANS le lien, pour confirmation et validation de cette adresse email.
    Une fois confirmé, on met "mail_valid" à true ou 1.

    * Et tant qu'à faire, on peut créer une autre TABLE "t_mail_history", pour enregistrer chaque message, avec la date d'envoi, contenu du message, email,...

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 152
    Points : 57
    Points
    57
    Par défaut
    Bonjour

    Auriez vous un tuto pour faire cela ?
    Creer un espace membre pseudo mail etc... avec confirmation du mail afin de validé la fiche.

    Merci par avance

    @+ Filou

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    moi, ça me gonflerai de devoir systématiquement cliquer sur un lien de validation à CHAQUE FOIS.
    Si c'est pour faire un anti-spam d'un formulaire de contact qui doit être utilisé uniquement en dernier recours ou quelque chose du genre, c'est peut-être l'objectif
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 152
    Points : 57
    Points
    57
    Par défaut
    Bonjour

    Merci pour vos réponses.
    Oui pour le systeme anti spam malgres que j'ai un systeme de captcha, je vais surement m'orienter sur un systeme d'inscription.
    Mais je ne sais pas comment faire pour la validation du mail pour faire une confirmation.

    Bonne journee a tous.

    @+ Filou

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    quand tu sauras CLAIREMENT ce que tu veux faire, merci de l'exprimer et l'expliquer, clairement.

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 152
    Points : 57
    Points
    57
    Par défaut
    Bonsoir

    C'est clair je veux un espace membre ou la personne quand elle s’inscrit valide son mail en cliquant sur un lien reçu par mail et voila, vous avez raison cela est contraignant de toujours valider le mail pour envoyer un message.
    Par contre comment faire tout cela je ne sais pas.

    Merci pour votre aide.

    @+ Filou

Discussions similaires

  1. validation du formulaire de la page ouvrante d'un popup
    Par noa dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/08/2005, 12h11
  2. Réponses: 5
    Dernier message: 24/05/2005, 11h21
  3. Valider un formulaire contenu dans une iframe
    Par snoopy5.0 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/04/2005, 11h14
  4. Valider un formulaire par une image
    Par Fleep dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/10/2004, 01h50
  5. [Struts]Validation de formulaire
    Par djoukit dans le forum Struts 1
    Réponses: 4
    Dernier message: 12/03/2004, 09h12

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