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 :

Difficulté avec un formulaire HTML


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 36
    Points : 16
    Points
    16
    Par défaut Difficulté avec un formulaire HTML
    Bonsoir,

    Je suis tout nouveau en PHP et je galère un peu... J'ai un formulaire HTML que je souhaite envoyer par mail avec un script PHP.

    Voici mon formulaire de départ :
    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
    <form class="form" id="form1" name="formulaire"  > <!-- onsubmit="check();" method="post" action="traitement_formulaire.php"-->
     
    						<p class="name">
    							<span id="name-error" class="erreur">Veuillez saisir votre nom</span>
    							<input name="nom" type="text" onblur="check_nom()" class="validate[required,custom[onlyLetter],length[0,100]] feedback-input" placeholder="Nom" id="name" />
    						</p>
     
    						<p class="email">
    							<span id="email-error" class="erreur">Le mail est incorrect</span>
    							<input name="email" onblur="check_mail()" type="text" class="validate[required,custom[email]] feedback-input" id="email" placeholder="Email" />							
    						</p>
     
    						<p class="message">
    							<span id="comment-error" class="erreur">Veuillez saisir votre message</span>
    							<textarea name="text" onblur="check_comment()" class="validate[required,length[6,300]] feedback-input" id="comment" placeholder="Votre message"></textarea>							
    						</p>
     
     
    						<div class="submit">
    							<input type="submit" value="ENVOYER LE MESSAGE" id="button-blue"/>
    							<div class="ease"></div>
    						</div>
    					</form>
    Et pour le script PHP, je me suis basé sur un exemple trouvé sur internet.

    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
        <?php
        /*
        	********************************************************************************************
        	CONFIGURATION
        	********************************************************************************************
        */
        // destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
        $destinataire = 'webmaster@mon-site.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=\"contact.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 = htmlspecialchars(trim($text), ENT_QUOTES);
        		if (1 === get_magic_quotes_gpc())
        		{
        			$text = stripslashes($text);
        		}
     
        		$text = nl2br($text);
        		return $text;
        	};
     
        	/*
        	 * Cette fonction sert à vérifier la syntaxe d'un email
        	 */
        	function IsEmail($email)
        	{
        		$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
        		return (($value === 0) || ($value === false)) ? false : true;
        	}
     
        	// formulaire envoyé, on récupère tous les champs.
        	$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
        	$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
        	$message = (isset($_POST['text'])) ? Rec($_POST['text']) : '';
     
        	// 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 != '') && ($email != '') && ($message != ''))
        	{
        		// les 4 variables sont remplies, on génère puis envoie le mail
        		$headers  = 'MIME-Version: 1.0' . "\r\n";
        		$headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .
        				'Reply-To:'.$email. "\r\n" .
        				'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
        				'Content-Disposition: inline'. "\r\n" .
        				'Content-Transfer-Encoding: 7bit'." \r\n" .
        				'X-Mailer:PHP/'.phpversion();
     
        		// envoyer une copie au visiteur ?
        		if ($copie == 'oui')
        		{
        			$cible = $destinataire.';'.$email;
        		}
        		else
        		{
        			$cible = $destinataire;
        		};
     
        		// Remplacement de certains caractères spéciaux
        		$message = str_replace("&#039;","'",$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);
     
        		// Envoi du mail
        		$num_emails = 0;
        		$tmp = explode(';', $cible);
        		foreach($tmp as $email_destinataire)
        		{
        			if (mail($email_destinataire, $message, $headers))
        				$num_emails++;
        		}
     
        		if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
        		{
        			echo '<p>'.$message_envoye.'</p>';
        		}
        		else
        		{
        			echo '<p>'.$message_non_envoye.'</p>';
        		};
        	}
        	else
        	{
        		// une des 3 variables (ou plus) est vide ...
        		echo '<p>'.$message_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n";
        	};
        }; // fin du if (!isset($_POST['envoi']))
        ?>


    Je me retrouve sans aucun message ni mail envoyé avec les caractères "nom=&email=&text=&envoi=ENVOYER+LE+MESSAGE" qui apparaissent dans l'URL.

  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 remettre ton dans la balise <form>.

    Pour le traitement des emails, on recommande plutôt d'utiliser PHPMailer que la simple fonction mail()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Effectivement, j'avais mis la méthode post en commentaire. Je suis maintenant redirigé vers la page 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
    envoyer le formulaire."; $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 '
     
    '.$message_erreur_formulaire.'
    '."\n"; } else { /* * cette fonction sert à  nettoyer et enregistrer un texte */ function Rec($text) { $text = htmlspecialchars(trim($text), ENT_QUOTES); if (1 === get_magic_quotes_gpc()) { $text = stripslashes($text); } $text = nl2br($text); return $text; }; /* * Cette fonction sert à  vérifier la syntaxe d'un email */ function IsEmail($email) { $value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email); return (($value === 0) || ($value === false)) ? false : true; } // formulaire envoyé, on récupère tous les champs. $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; $email = (isset($_POST['email'])) ? Rec($_POST['email']) : ''; $message = (isset($_POST['text'])) ? Rec($_POST['text']) : ''; // 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 != '') && ($email != '') && ($message != '')) { // les 4 variables sont remplies, on génère puis envoie le mail $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" . 'Reply-To:'.$email. "\r\n" . 'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" . 'Content-Disposition: inline'. "\r\n" . 'Content-Transfer-Encoding: 7bit'." \r\n" . 'X-Mailer:PHP/'.phpversion(); // 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(""",'"',$message); $message = str_replace('
    ','',$message); $message = str_replace('
    ','',$message); $message = str_replace("<","<",$message); $message = str_replace(">",">",$message); $message = str_replace("&","&",$message); // Envoi du mail $num_emails = 0; $tmp = explode(';', $cible); foreach($tmp as $email_destinataire) { if (mail($email_destinataire, $message, $headers)) $num_emails++; } if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1))) { echo '
     
    '.$message_envoye.'
    '; } else { echo '
     
    '.$message_non_envoye.'
    '; }; } else { // une des 3 variables (ou plus) est vide ... echo '
     
    '.$message_formulaire_invalide.' Retour au formulaire
    '."\n"; }; }; // fin du if (!isset($_POST['envoi'])) ?>

  4. #4
    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
    Comme tu peux le voir par la coloration, tu as un problème de guillemet sur la deuxième ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $message = str_replace("’","'",$message);
        		$message = str_replace(""",'"',$message);
        		$message = str_replace('<br>','',$message);
        		$message = str_replace('<br />','',$message);
    Par contre je ne vois pas à quoi sert cette ligne.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Pour moi, la ligne n'est pas fausse. Cela permet juste de transformer certains caractères spéciaux HTML pour envoyer le mail.

  6. #6
    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
    Tu as bien """ ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Oui, le script remplace "’" par le caractère (") entre parenthèse. Même en supprimant cette ligne et ce bloc de code, j'ai toujours la même erreur...

  8. #8
    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
    Non je te parle de la deuxième ligne, celle avec """.
    Ce que je te demandais c'est si dans ton script tu as vraiment """ justement ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Oui, pourquoi ?

  10. #10
    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
    Et qu'est censé faire cette ligne donc ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Oui, de fait la ligne ne sert à rien... J'ai du faire un mauvais copier/coller. Par contre, même en enlevant la ligne, je conserve toujours mes soucis

  12. #12
    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
    Tu as exactement la même chose ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Oui

  14. #14
    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
    Est-ce que tu as testé si le PHP fonctionnait sur ton serveur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Il y avait une erreur de dépendance PHP... C'est bon ça marche maintenant, merci

  16. #16
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 36
    Points : 16
    Points
    16
    Par défaut
    Mon message se retrouve être l'objet du mail et le header s'affiche dans le mail. Puis-je régler ça avec PHPmailer ?

Discussions similaires

  1. Exécution d'un VBS avec ouverture formulaire HTML
    Par mapillon dans le forum VBScript
    Réponses: 1
    Dernier message: 18/04/2012, 16h12
  2. [Oracle] Mise à jour d'un enregistrement avec un formulaire HTML et PHP
    Par Nyko17 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/10/2008, 19h06
  3. Difficulté avec formulaire PHP
    Par Miam Maikan dans le forum Langage
    Réponses: 1
    Dernier message: 15/09/2006, 04h45
  4. Probleme avec un formulaire html
    Par SarahT dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 05/06/2006, 14h47
  5. Probleme avec mes formulaire html dans mes pages web
    Par foungnigue dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/12/2005, 20h07

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