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 :

Formulaire champs multiples


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Points : 58
    Points
    58
    Par défaut Formulaire champs multiples
    Bonjour,
    je veux faire un formulaire avec des champs multiples et qu'aprés les informations saisies dedans soient envoyées par email.
    Le probléme c'est que je n'ai que le contenu du message qui est envoyé et pas les autres informations comme le nom, le prenom, le fax, etc.. et je ne sais pas ou mettre les variables pour les afficher dans le mail:
    Voici le 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
    <form id="myform" class="cssform" method="post" action="traitement.php" enctype="multipart/form-data">
    <table border="0">
    	<legend>Vos coordonnées</legend>
    		<p><label for="nom">Nom :</label><input type="text" id="nom" name="nom" tabindex="1" /></p>
    		<p><label for="prenom">Pr&eacute;nom :</label><input type="text" id="prenom" name="prenom" tabindex="2" /></p>
     
    		<p><label for="email">Email :</label><input type="text" id="mail" name="mail" tabindex="2" /></p>
    		<p><label for="adresse">Adresse :</label><input type="text" id="adresse" name="adresse" tabindex="2" /></p>
    		<p><label for="fax">N°Fax :</label><input type="text" id="fax" name="fax" tabindex="2" /></p>
    		<p><label for="tel">N°Tel :</label><input type="text" id="tel" name="tel" tabindex="2" /></p>
     
     
     
     
    	<legend>Votre message :</legend>
    		<p><label for="objet">Objet :</label><input type="text" id="objet" name="objet" tabindex="3" /></p>
    		<p><label for="message">Message :</label><textarea id="messag" name="messag" tabindex="4" cols="30" rows="8"></textarea></p>
     
     
    	<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /><input type="reset" value="Effacer" /></div>
     
     
    </table>
    </form>
    et voici la page traitement.php

    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
    <?php
    	/*
    		********************************************************************************************
    		CONFIGURATION
    		********************************************************************************************
    	*/
    	// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
    	$destinataire = 'mon_adresse@hotmail.com';
     
    	// copie ? (envoie une copie au visiteur)
    	$copie = 'oui'; // 'oui' ou 'non'
     
    	// Messages de confirmation du mail
    	$message_envoye = "Votre message nous est bien parvenu !";
    	$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
     
    	// Messages d'erreur du formulaire
    	$message_erreur_formulaire = "Vous devez d'abord <a href=\"erreur.html\">envoyer le formulaire</a>.";
    	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
     
    	/*
    		********************************************************************************************
    		FIN DE LA CONFIGURATION
    		********************************************************************************************
    	*/
     
    	// on teste si le formulaire a été soumis
    	if (!isset($_POST['envoi']))
    	{
    		// formulaire non envoyé
    		echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
    	}
    	else
    	{
    		/*
    		 * cette fonction sert à nettoyer et enregistrer un texte
    		 */
    		function Rec($text)
    		{
    			$text = trim($text); // delete white spaces after & before text
    			if (1 === get_magic_quotes_gpc())
    			{
    				$stripslashes = create_function('$txt', 'return stripslashes($txt);');
    			}
    			else
    			{
    				$stripslashes = create_function('$txt', 'return $txt;');
    			}
     
    			// magic quotes ?
    			$text = $stripslashes($text);
    			$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
    			$text = nl2br($text);
    			return $text;
    		};
     
    		/*
    		 * Cette fonction sert à vérifier la syntaxe d'un email
    		 */
    		function IsEmail($email)
    		{
    			$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
    			return (eregi($pattern,$email)) ? true : false;
    		};
     
    		// formulaire envoyé, on récupère tous les champs.
    		$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
    		$prenom    = (isset($_POST['prenom']))     ? Rec($_POST['prenom'])     : '';
    		$mail   = (isset($_POST['mail']))   ? Rec($_POST['mail'])   : '';
    		$adresse = (isset($_POST['adresse']))     ? Rec($_POST['adresse'])     : '';
    		$fax     = (isset($_POST['fax']))     ? Rec($_POST['fax'])     : '';
    		$tel     = (isset($_POST['tel']))     ? Rec($_POST['tel'])     : '';
    		$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
    		$messag = (isset($_POST['messag'])) ? Rec($_POST['messag']) : '';
     
     
     
    		// On va vérifier les variables et l'email ...
    		$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
     
    		if (($nom != '') && ($prenom != '') && ($mail != '') && ($adresse != '') && ($fax != '') && ($tel != '') && ($objet != '') && ($messag != ''))
    		{
    			// les 4 variables sont remplies, on génère puis envoie le mail
    			$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";
     
    			// envoyer une copie au visiteur ?
    			if ($copie == 'oui')
    			{
    				$cible = $destinataire.','.$email;
    			}
    			else
    			{
    				$cible = $destinataire;
    			};
     
    			// Remplacement de certains caractères spéciaux
    			$message = str_replace("'","'",$message);
    			$message = str_replace("’","'",$message);
    			$message = str_replace("&quot;",'"',$message);
    			$message = str_replace('<br>','',$message);
    			$message = str_replace('<br />','',$message);
    			$message = str_replace("&lt;","<",$message);
    			$message = str_replace("&gt;",">",$message);
    			$message = str_replace("&amp;","&",$message);
    			$message = str_replace("&eacute;","é",$message);
    			$message = str_replace("&agrave;","à",$message);
    			$message = str_replace("&egrave;","è",$message);
    			$message = str_replace("&ccedil;","ç",$message);
    			$message = str_replace("&euro;","€",$message);
    			$message = str_replace("&ocirc;","ô",$message);
     
     
    			// Envoi du mail
    			if (mail($cible, $objet, $message, $headers))
    			{
    				echo '<p>'.$message_envoye.'</p>'."\n";
    			}
    			else
    			{
    				echo '<p>'.$message_non_envoye.'</p>'."\n";
    			};
    		}
    		else
    		{
    			// une des 3 variables (ou plus) est vide ...
    			echo '<p>'.$message_formulaire_invalide.' <a href="particuliers.html">Retour au formulaire</a></p>'."\n";
    		};
    	}; // fin du if (!isset($_POST['envoi']))
    ?>
    Merci de m'aider

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut les ajouter a ton $message
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Points : 58
    Points
    58
    Par défaut
    J'ai essayé ça mais ça ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	// Envoi du mail
    			if (mail($cible, $objet, $message, $headers, $nom, $prenom, $mail, $adresse, $fax, $tel))
    			{
    				echo '<p>'.$message_envoye.'</p>'."\n";
    			}

  4. #4
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Points : 58
    Points
    58
    Par défaut
    Ben en fait j'ai trouvé une solution en changeant tout:
    Ca c 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
    <p><form id="myform" class="cssform" method="post" action="traitement2.php">
    <table border="0">
    	<legend>Vos coordonnées</legend>
    		<p><label for="nom">Nom :</label><input type="text" id="nom" name="nom" tabindex="1" /></p>
    		<p><label for="prenom">Pr&eacute;nom :</label><input type="text" id="prenom" name="prenom" tabindex="2" /></p>
    		<p><label for="e_mail">Email :</label><input type="text" id="e_mail" name="e_mail" tabindex="2" /></p>
    		<p><label for="adresse">Adresse :</label><input type="text" id="adresse" name="adresse" tabindex="2" /></p>
    		<p><label for="code_postal">Code postal :</label><input type="text" id="code_postal" name="code_postal" tabindex="2" /></p>
    		<p><label for="ville">Ville :</label><input type="text" id="ville" name="ville" tabindex="2" /></p>
    		<p><label for="telephone">Telephone :</label><input type="text" id="telephone" name="telephone" tabindex="2" /></p>	
            <p><label for="continent">Continent :</label>
            <select id="continent" name="continent">
    			<OPTION>Europe
    			<OPTION>Asie
    			<OPTION>Afrique
    			<OPTION>Am&eacute;rique
    			<OPTION>Oc&eacute;anie
                </SELECT><P>
    		<legend>Votre message :</legend>
    		<p><label for="objet">Objet :</label><input type="text" id="objet" name="objet" tabindex="3" /></p>
    		<p><label for="message">Message :</label><textarea id="message" name="message" tabindex="4" cols="30" rows="8"></textarea></p>
    <div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /><input type="reset" value="Effacer" /></div>
    </table>
    </form></p><br />
    et ca la page de traitement:
    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
    <?php
    $destinataire= "mon_adresse@hotmail.com";
    $objet = "Formulaire de contact";
    $headers = "From: bambooetcotton\n\r";
    $headers .= "MIME-Version: 1.0\n\r";
    $headers .= "Content-Type: text/html; charset=iso-8859-1\n\r";
    $nom = $_POST['nom'];
    $prenom = $_POST['prenom'];
    $e_mail = $_POST['e_mail'];
    $adresse = $_POST['adresse'];
    $code_postal = $_POST['code_postal'];
    $ville = $_POST['ville'];
    $telephone = $_POST['telephone'];
    $continent = $_POST['continent'];
    $message = $_POST['message'];
    $msg = "nom = $nom
    prenom = $prenom
    e_mail = $e_mail
    adresse = $adresse
    code_postal = $code_postal
    ville = $ville
    telephone = $telephone
    continent = $continent
    message = $message";
     
    // Remplacement de certains caractères spéciaux
    			$message = str_replace("'","'",$message);
    			$message = str_replace("’","'",$message);
    			$message = str_replace("&quot;",'"',$message);
    			$message = str_replace('<br>','',$message);
    			$message = str_replace('<br />','',$message);
    			$message = str_replace("&lt;","<",$message);
    			$message = str_replace("&gt;",">",$message);
    			$message = str_replace("&amp;","&",$message);
    			$message = str_replace("&eacute;","é",$message);
    			$message = str_replace("&agrave;","à",$message);
    			$message = str_replace("&egrave;","è",$message);
    			$message = str_replace("&ccedil;","ç",$message);
    			$message = str_replace("&euro;","€",$message);
    			$message = str_replace("&ocirc;","ô",$message);
    echo nl2br($msg);
    mail($destinataire, $objet, $headers, $msg);
    echo '<a href="contact.html">Retour au formulaire</a></p>'."\n";?>
    Mais il me reste une question puis je sécuriser encore plus mes codes pour éviter les injections sql ou tout autres attaques?
    Merci de m'aider

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    Le traitement sur ton premier post est plutôt pas mal par contre la dernière version que tu as trouvé ne filtre absolument rien. Il ne reste plus donc qu'à mixer les 2 afin d'avoir quelque chose de correct

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = str_replace("'","'",$message);
    Remplacer une quote par une quote il fallait y penser

  6. #6
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Points : 58
    Points
    58
    Par défaut
    oui donc si ma première solution est bonne ou dois je mettre les variables $ nom, $prenom etc, pour qu'elles s'affichent dans le mail car j'ai pas trouvé ou les mettre.

  7. #7
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2008
    Messages : 106
    Points : 152
    Points
    152
    Par défaut
    Citation Envoyé par luciedoudou Voir le message
    Mais il me reste une question puis je sécuriser encore plus mes codes pour éviter les injections sql ou tout autres attaques?
    Merci de m'aider
    euh, bien comme leur nom l'indique les injections SQL ne concernent que les bases de données et tu n'en n'utilises pas ! Donc aucun soucis de ce côté là !

  8. #8
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Points : 58
    Points
    58
    Par défaut
    Donc la 2éme solution que je propose est sécurisée alors pour les attaques? Désolé je ne les connais pas toutes donc c'est pour ça que je vous demande vous penserez surement à des attaques auxquelles moi je ne penserais pas.
    Merci

Discussions similaires

  1. formulaire avec des champs multiples
    Par don'de dans le forum Struts 1
    Réponses: 13
    Dernier message: 16/02/2007, 09h42
  2. Champs multiples à vérifier...
    Par minusette dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 01/12/2005, 14h04
  3. Champ Multiple Concatenation et Mysql
    Par mulbek dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 17/10/2005, 13h40
  4. Formulaire, champs de type file, value
    Par Space Cowboy dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2005, 08h29
  5. formulaire choix multiple
    Par pram dans le forum XMLRAD
    Réponses: 6
    Dernier message: 02/02/2003, 18h59

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