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 HTML5 et PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Par défaut Formulaire HTML5 et PHP
    Bonjour,
    Ca fait 5 heures que je cherche pourquoi mon formulaire ne fonctionne pas et je n'ai pas trouvé. (rigolez pas...)

    Je construis un site onepage en HTML5
    Le formulaire est en HTML et pointe vers un fichier PHP.
    J'ai testé en local et j'ai aussi chargé le site sur mon serveur. Rien n'y a fait.

    HTML
    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
     
    <form id="contact" name="form_contact" method="post" action="traitement.php"> 
     
        <p><label for="nom">Nom</label></p> 
        <p><input type="text" id="nom" name="nom" placeholder="Prénom et nom" required tabindex="1" /> </p>
     
        <p><label for="email">Courriel</label></p> 
        <p><input type="text" id="email" name="email" placeholder="exemple@domain.com" required tabindex="2" /> </p>
     
    	<p><label for="objet">Objet</label></p> 
        	<p><input type="text" id="objet" name="objet " placeholder="L'objet de votre mail" required tabindex="3" /> </p>
     
        	<p><label for="message">Votre message</label></p> 
        	<p><textarea name="message" id="message" tabindex="4"></textarea> </p>
     
        	<p><input type="submit" id="envoi" name="envoi" tabindex="5" value="Envoyer le courriel" /> </p>
     
        </form>


    PHP (traitement.php)
    Oui, j'ai récupéré du code que j'ai adapté.
    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
    <?php
    	/*
    		********************************************************************************************
    		CONFIGURATION
    		********************************************************************************************
    	*/
    	// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
    	$destinataire = 'monmail@mondomaine.com';
     
    	// copie ? (envoie une copie au visiteur)
    	$copie = 'non'; // 'oui' ou 'non'
     
    	// Messages de confirmation du mail
    	$message_envoye = "Votre message nous est bien parvenu . Nous y répondrons dans les plus brefs délais. Pour retourner au site cliquez <a href=http://localhost/201006_thenard_onepage/#contact>ici</a>";
    	$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer s'il vous plait ou utiliser une méthode traditionnelle.";
     
    	// Messages d'erreur du formulaire
    	$message_erreur_formulaire = "Vous devez d'abord <a href=http://localhost/201006_thenard_onepage/#contact>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); // supprime les espaces avant et après le texte
    			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'])     : '';
    		$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
    		$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
    		$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
     
    		// 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 != '') && ($objet != '') && ($message != ''))
    		{
    			// 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);
     
    			// Envoi du mail
    			// Function mail()
    			mail($cible, $nom, $objet, $message, $headers);
    			if (mail($cible, $nom, $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="http://localhost/201006_thenard_onepage/#contact">Retour au formulaire</a></p>'."\n";
    		};
    	}; // fin du if (!isset($_POST['envoi']))
    ?>
    Peut-être aurez-vous l'œil moins fatigué que moi, pour trouver la @"?#!! de virgule qui manque. Moi j'en peux plus.

    Merci pour votre aide.

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Trouvé en 3 secondes

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $message = str_replace(""",'"',$message);

    A remplacer par :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $message = str_replace("\"",'"',$message);

    il faut protéger tes quotes

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Par défaut
    Salut Madfrix,
    Je me disais bien que tout ce rouge n'était pas de bon augure T'es trop fort...
    ok...
    Il y a une erreur de transcription dans le code.

    Voici comment il apparait "en vrai" dans mon fichier PHP.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // 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);

    Du coup, j'ai placé ta correction après le &quot;
    $message = str_replace("&quot;","\"",$message);
    C'est juste ?


    En tout cas, ça ne résout pas le problème.
    L'envoi du formulaire renvoi toujours vers une page d'erreur :
    Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur. Retour au formulaire
    Il s'agit de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message_formulaire_invalide
    Donc logiquement, je me dis que c'est un problème avec les champs et leur reconnaissance. J'ai passé au crible les noms dans le HTML et les appels dans le PHP, sans trouver d'erreur.


    Est ce que tu penses qu'une nouvelle balise HTML5 peut provoquer des erreurs ?
    Il s'agit de ( moi, je dirais non mais bon... j'apprends, je cherche tout et n'importe quoi)


    EDIT : Réflexion supplémentaire.
    Je me demande à quel moment le mail est envoyé ?
    Il y a bien ça à la fin du PHP, mais ça ne me semble bizarre.
    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
    // Function mail()
    	mail($cible, $nom, $objet, $message, $headers);
    	if (mail($cible, $nom, $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="http://localhost/201006_thenard_onepage/#contact">Retour au formulaire</a></p>'."\n";
    		};
    Quand penses-tu ?
    Tu peux jeter un oeil aux accolades aussi ?

    Merci

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    si tu as modifié ton code depuis hier, montres nous ta dernière version stp.

    Ensuite, fais un

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo htmlentities($message);

    avant traitement, voir si tu as bien ton format attendu et après traitement voir s'il a bien modifié cette chaine comme tu le souhaites

    EDIT: vire tes ; après tes accolades aussi

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Par défaut
    Bonjour Madfrix,

    Mise à jour des codes

    HTML5
    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
    <form id="contact" name="form_contact" method="post" action="traitement.php"> 
     
        	<p><label for="nom">Nom</label></p> 
        	<p><input type="text" id="nom" name="nom" placeholder="Prénom et nom" required tabindex="1" /> </p>
     
        	<p><label for="email">Courriel</label></p> 
        	<p><input type="text" id="email" name="email" placeholder="exemple@domain.com" required tabindex="2" /> </p>
     
    	<p><label for="objet">Objet</label></p> 
        	<p><input type="text" id="objet" name="objet " placeholder="L'objet de votre mail" required tabindex="3" /> </p>
     
        	<p><label for="message">Votre message</label></p> 
        	<p><textarea name="message" id="message" tabindex="4"></textarea> </p>
     
        	<p><input type="submit" id="envoi" name="envoi" tabindex="5" value="Envoyer le courriel" /> </p>
     
        	</form>

    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
    <?php
    	/*
    		**********************************************************
    		CONFIGURATION
    		**********************************************************
    	*/
    	// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
    	$destinataire = 'moi@mondomaine.com';
     
    	// copie ? (envoie une copie au visiteur)
    	$copie = 'non'; // 'oui' ou 'non'
     
    	// Messages de confirmation du mail
    	$message_envoye = "Votre message nous est bien parvenu . Nous y répondrons dans les plus brefs délais. Pour retourner au site cliquez <a href=http://localhost/201006_thenard_onepage/#contact>ici</a>";
    	$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer s'il vous plait ou utiliser une méthode traditionnelle.";
     
    	// Messages d'erreur du formulaire
    	$message_erreur_formulaire = "Vous devez d'abord <a href=http://localhost/201006_thenard_onepage/#contact>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); // supprime les espaces avant et après le texte
    			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'])   : '';
    		$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
    		$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
    		$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
     
    		// 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 != '') && ($objet != '') && ($message != ''))
    		{
    			// 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);
     
    			// Envoi du mail
    			// Function mail()
    			mail($cible, $nom, $objet, $email, $message, $headers);
    			if (mail($cible, $nom, $objet, $email, $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 htmlentities($objet);
    			//echo '<p>'.$message_formulaire_invalide.' <a href="http://localhost/201006_thenard_onepage/#contact">Retour au formulaire</a></p>'."\n";
    		}
    	} // fin du if (!isset($_POST['envoi']))
    ?>
    Tu vois que j'ai toujours l'erreur qu'on a corrigé hier soir (?):
    $message = str_replace("&quot;",'\"',$message);

    A propos de "echo htmlentities".
    Il est présent à la fin du code.
    (Je ne sais pas ou placer l'écho pour tester avant le traitement )
    J'ai testé les données des champs envoyées une par une. (le résultat donne un nouvel onglet contenant le texte inséré dans ces champs.)

    $nom = ok
    $email = ok
    $objet = vide
    $message=ok


    $objet = vide C'est là le problème. Mais j'ai relu encore mon code, HTML et PHP, plusieurs fois sans trouver ce qui cloche.

    [mode perso] Je suis vraiment dégoutée. Ce n'est quand même pas mon premier formulaire de contact, mais à chaque fois que je mets les mains dedans, je galère pendant des heures . C'est pourtant simple!)

  6. #6
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonjour,

    Tu as juste inséré un espace en trop dans ton input :
    tu aurais pu facilement le voir en exécutant la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(isset($_POST['envoi'])) 
        var_dump($_POST);

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

Discussions similaires

  1. [PDF] Remplir un formulaire PDF avec PHP
    Par Orionmel dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 21/10/2013, 10h14
  2. VALUE d'un champ de formulaire avec variable php
    Par shub dans le forum Langage
    Réponses: 5
    Dernier message: 04/04/2006, 12h13
  3. Réponses: 15
    Dernier message: 13/03/2006, 16h24
  4. [MySQL] Formulaire de recherche PHP + un script d recherche en HTML
    Par Dsphinx dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/11/2005, 19h44
  5. Problème Formulaire + popup + page PHP
    Par Invité dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/02/2005, 00h10

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