Problème avec mon formulaire de contact PHP
Résolu
MarleneB
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
MarleneB Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
MarleneB Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Alors voilà je n'arrive pas à faire fonctionner mon formulaire de contact PHP, je l'ai récupéré sur un site et je l'ai changé un peu pour qu'il me convienne mais malheureusement je ne reçois pas les messages lorsque je clique sur "envoyer". Pourriez vous m'aider ?
Je vous envoie le code (il est très long et je m'en excuse d'avance :$) Bien entendu j'ai mis des xxxx à: $mon_email = "xxxx@gmail.com" pour plus d'anonymat mais en réalité y figure mon adresse mail... donc je ne vois pas d'où vient le problème.
Je vous remercie d'avance de votre aide :)
<?php
if (isset($_POST["envoyer"])){ // Si le formulaire a été soumis
$etat = "erreur"; // On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur
// On récupère les champs du formulaire, et on arrange leur mise en forme
if (isset($_POST["son_pseudo"])) $_POST["son_pseudo"]=trim(stripslashes($_POST["son_pseudo"])); // trim() enlève les espaces en début et fin de chaine
if (isset($_POST["son_email"])) $_POST["son_email"]=trim(stripslashes($_POST["son_email"])); // stripslashes() retire les backslashes ==> \' devient '
if (isset($_POST["son_numero"])) $_POST["son_numero"]=trim(stripslashes($_POST["son_numero"]));
if (isset($_POST["son_objet"])) $_POST["son_objet"]=trim(stripslashes($_POST["son_objet"]));
if (isset($_POST["son_message"])) $_POST["son_message"]=trim(stripslashes($_POST["son_message"]));
// Après la mise en forme, on vérifie la validité des champs
if (empty($_POST["son_pseudo"])) { // L'utilisateur n'a pas rempli le champ pseudo
$erreur="Vous n'avez pas entré votre pseudo..."; // On met dans erreur le message qui sera affiché
}
elseif (empty($_POST["son_email"])) { // L'utilisateur n'a pas rempli le champ email
$erreur="Nous avons besoin de votre e-mail pour vous répondre...";
}
elseif (!preg_match("$[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["son_email"])){ // On vérifie si l'email est bien de la forme messagerie@domaine.tld (cf cours d'expressions régulières)
$erreur="Votre adresse e-mail n'est pas valide...";
}
elseif (empty($_POST["son_objet"])) { // L'utilisateur n'a pas rempli le champ objet
$erreur="Vous devez entrer l'objet de votre message...";
}
elseif (empty($_POST["son_message"])) { // L'utilsateur n'a écrit aucun message
$erreur="Merci de saisir un message...";
}
else { // Si tous les champs sont valides, on change l'état à ok
$etat="ok";
}
}
else { // Sinon le formulaire n'a pas été soumis
$etat="attente"; // On passe donc dans l'état attente
}
if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant à l'erreur
}
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
<head>
<title> xxxxx </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<link href="css1.css" rel="stylesheet" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Sofia|Clicker+Script|Text+Me+One|Sacramento' rel='stylesheet' type='text/css'>
</head>
<body>
<div id="site">
<div id="contenu">
<!-- Formulaire HTML qu'on affiche dans l'état attente ou erreur -->
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <!-- Les données du formulaire seront récupérée avec la méthode POST, et action correspond à la page contenant le formulaire -->
<p style="text-align:left">
<label for="son_pseudo">Nom *</label><br /> <!-- Intitulé du champ pseudo -->
<input type="text" size="40" name="son_pseudo" id="son_pseudo" value="<?php
if (!empty($_POST["son_pseudo"])) {
// le pseudo de l'expéditeur a été saisi --> le réafficher
echo htmlspecialchars($_POST["son_pseudo"],ENT_QUOTES); // htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &
}
?>" />
<br />
<label for="son_email">E-mail *</label><br /> <!-- Intitulé du champ e-mail -->
<input type="text" size="40" name="son_email" id="son_email" value="<?php
if (!empty($_POST["son_email"])) {
// l'e-mail de l'expéditeur a été saisi --> le réafficher
echo htmlspecialchars($_POST["son_email"],ENT_QUOTES);
}
?>" />
<br />
<label for="son_numero">Numéro de téléphone</label><br /> <!-- Intitulé du champ url (facultatif) -->
<input type="text" size="40" name="son_numero" id="son_numero" value="<?php
if (!empty($_POST["son_numero"])) {
// l'url a été saisi --> la réafficher
echo htmlspecialchars($_POST["son_numero"],ENT_QUOTES);
}
?>" />
<br />
<label for="son_objet">Objet *</label><br /> <!-- Intitulé du champ objet -->
<input type="text" size="40" name="son_objet" id="son_objet" value="<?php
if (!empty($_POST["son_objet"])) {
// l'objet du message a été saisi --> le réafficher
echo htmlspecialchars($_POST["son_objet"],ENT_QUOTES);
}
?>" />
<br />
<label for="son_message">Message *</label><br /> <!-- Intitulé du champ message -->
<textarea name="son_message" id="son_message" cols="60" rows="25"><?php
if (isset($_POST["son_message"])) {
// le message a été saisi --> le réafficher
echo htmlspecialchars($_POST["son_message"],ENT_QUOTES);
}
?>
</textarea>
<br />
<input type="submit" name="envoyer" value="Envoyer" /><input type="reset" name="reset" value="Effacer" />
</p>
</form>
<!-- FIN du formulaire HTML -->
<?php
}
else { // Sinon l'état est ok donc on envoie le mail
$son_pseudo = $_POST["son_pseudo"]; // On stocke les variables récupérées du formulaire
$son_email = $_POST["son_email"];
$son_numero = $_POST["son_numero"];
$son_objet = $_POST["son_objet"];
$son_message = $_POST["son_message"];
$mon_email = "xxxx@gmail.com"; // Mise en forme du message que vous recevrez
$mon_pseudo = "xxxxx";
$mon_url = "xxxxxx";
$msg_pour_moi = "- Son pseudo : $son_pseudo \n
- Son E-mail : $son_email \n
- Son numero : $son_numero \n
- Objet du message : $son_objet \n
- Message : \n $son_message \n\n";
// Mise en forme de l'accusé réception qu'il recevra
$accuse_pour_lui = "Bonjour $son_pseudo,\n
Votre message m'a bien été envoyé, je tâcherai de vous répondre le plus rapidement possible.\n\n
- Votre E-mail : $son_email \n
- Votre numero : $son_numero \n
- L'objet de votre message : $son_objet \n
- Votre message : \n $son_message \n\n
Merci et à bientôt";
// Envoie du mail
$entete = "From: " . $mon_pseudo . " <" . $mon_email . ">\n"; // On prépare l'entête du message
$entete .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$entete .='Content-Transfer-Encoding: 8bit';
if (@mail($mon_email,$son_objet,$msg_pour_moi,$entete) && @mail($son_email,$son_objet,$accuse_pour_lui,$entete)){ // Si le mail a été envoyé
echo "<p style=\"text-align:center\">Votre message a été envoyé, vous recevrez une confirmation par mail.<br /><br />\n"; // On affiche un message de confirmation
echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n"; // Avec un lien de retour vers l'accueil du site
}
else { // Sinon il y a eu une erreur lors de l'envoi
echo "<p style=\"text-align:center\">Un problème s'est produit lors de l'envoi du message.\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a></p>\n"; // On propose un lien de retour vers le formulaire
}
}
?>
</div>
</div>
Alors voilà je n'arrive pas à faire fonctionner mon formulaire de contact PHP, je l'ai récupéré sur un site et je l'ai changé un peu pour qu'il me convienne mais malheureusement je ne reçois pas les messages lorsque je clique sur "envoyer". Pourriez vous m'aider ?
Je vous envoie le code (il est très long et je m'en excuse d'avance :$) Bien entendu j'ai mis des xxxx à: $mon_email = "xxxx@gmail.com" pour plus d'anonymat mais en réalité y figure mon adresse mail... donc je ne vois pas d'où vient le problème.
Je vous remercie d'avance de votre aide :)
<?php
if (isset($_POST["envoyer"])){ // Si le formulaire a été soumis
$etat = "erreur"; // On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur
// On récupère les champs du formulaire, et on arrange leur mise en forme
if (isset($_POST["son_pseudo"])) $_POST["son_pseudo"]=trim(stripslashes($_POST["son_pseudo"])); // trim() enlève les espaces en début et fin de chaine
if (isset($_POST["son_email"])) $_POST["son_email"]=trim(stripslashes($_POST["son_email"])); // stripslashes() retire les backslashes ==> \' devient '
if (isset($_POST["son_numero"])) $_POST["son_numero"]=trim(stripslashes($_POST["son_numero"]));
if (isset($_POST["son_objet"])) $_POST["son_objet"]=trim(stripslashes($_POST["son_objet"]));
if (isset($_POST["son_message"])) $_POST["son_message"]=trim(stripslashes($_POST["son_message"]));
// Après la mise en forme, on vérifie la validité des champs
if (empty($_POST["son_pseudo"])) { // L'utilisateur n'a pas rempli le champ pseudo
$erreur="Vous n'avez pas entré votre pseudo..."; // On met dans erreur le message qui sera affiché
}
elseif (empty($_POST["son_email"])) { // L'utilisateur n'a pas rempli le champ email
$erreur="Nous avons besoin de votre e-mail pour vous répondre...";
}
elseif (!preg_match("$[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["son_email"])){ // On vérifie si l'email est bien de la forme messagerie@domaine.tld (cf cours d'expressions régulières)
$erreur="Votre adresse e-mail n'est pas valide...";
}
elseif (empty($_POST["son_objet"])) { // L'utilisateur n'a pas rempli le champ objet
$erreur="Vous devez entrer l'objet de votre message...";
}
elseif (empty($_POST["son_message"])) { // L'utilsateur n'a écrit aucun message
$erreur="Merci de saisir un message...";
}
else { // Si tous les champs sont valides, on change l'état à ok
$etat="ok";
}
}
else { // Sinon le formulaire n'a pas été soumis
$etat="attente"; // On passe donc dans l'état attente
}
if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant à l'erreur
}
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
<head>
<title> xxxxx </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<link href="css1.css" rel="stylesheet" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Sofia|Clicker+Script|Text+Me+One|Sacramento' rel='stylesheet' type='text/css'>
</head>
<body>
<div id="site">
<div id="contenu">
<!-- Formulaire HTML qu'on affiche dans l'état attente ou erreur -->
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <!-- Les données du formulaire seront récupérée avec la méthode POST, et action correspond à la page contenant le formulaire -->
<p style="text-align:left">
<label for="son_pseudo">Nom *</label><br /> <!-- Intitulé du champ pseudo -->
<input type="text" size="40" name="son_pseudo" id="son_pseudo" value="<?php
if (!empty($_POST["son_pseudo"])) {
// le pseudo de l'expéditeur a été saisi --> le réafficher
echo htmlspecialchars($_POST["son_pseudo"],ENT_QUOTES); // htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &
}
?>" />
<br />
<label for="son_email">E-mail *</label><br /> <!-- Intitulé du champ e-mail -->
<input type="text" size="40" name="son_email" id="son_email" value="<?php
if (!empty($_POST["son_email"])) {
// l'e-mail de l'expéditeur a été saisi --> le réafficher
echo htmlspecialchars($_POST["son_email"],ENT_QUOTES);
}
?>" />
<br />
<label for="son_numero">Numéro de téléphone</label><br /> <!-- Intitulé du champ url (facultatif) -->
<input type="text" size="40" name="son_numero" id="son_numero" value="<?php
if (!empty($_POST["son_numero"])) {
// l'url a été saisi --> la réafficher
echo htmlspecialchars($_POST["son_numero"],ENT_QUOTES);
}
?>" />
<br />
<label for="son_objet">Objet *</label><br /> <!-- Intitulé du champ objet -->
<input type="text" size="40" name="son_objet" id="son_objet" value="<?php
if (!empty($_POST["son_objet"])) {
// l'objet du message a été saisi --> le réafficher
echo htmlspecialchars($_POST["son_objet"],ENT_QUOTES);
}
?>" />
<br />
<label for="son_message">Message *</label><br /> <!-- Intitulé du champ message -->
<textarea name="son_message" id="son_message" cols="60" rows="25"><?php
if (isset($_POST["son_message"])) {
// le message a été saisi --> le réafficher
echo htmlspecialchars($_POST["son_message"],ENT_QUOTES);
}
?>
</textarea>
<br />
<input type="submit" name="envoyer" value="Envoyer" /><input type="reset" name="reset" value="Effacer" />
</p>
</form>
<!-- FIN du formulaire HTML -->
<?php
}
else { // Sinon l'état est ok donc on envoie le mail
$son_pseudo = $_POST["son_pseudo"]; // On stocke les variables récupérées du formulaire
$son_email = $_POST["son_email"];
$son_numero = $_POST["son_numero"];
$son_objet = $_POST["son_objet"];
$son_message = $_POST["son_message"];
$mon_email = "xxxx@gmail.com"; // Mise en forme du message que vous recevrez
$mon_pseudo = "xxxxx";
$mon_url = "xxxxxx";
$msg_pour_moi = "- Son pseudo : $son_pseudo \n
- Son E-mail : $son_email \n
- Son numero : $son_numero \n
- Objet du message : $son_objet \n
- Message : \n $son_message \n\n";
// Mise en forme de l'accusé réception qu'il recevra
$accuse_pour_lui = "Bonjour $son_pseudo,\n
Votre message m'a bien été envoyé, je tâcherai de vous répondre le plus rapidement possible.\n\n
- Votre E-mail : $son_email \n
- Votre numero : $son_numero \n
- L'objet de votre message : $son_objet \n
- Votre message : \n $son_message \n\n
Merci et à bientôt";
// Envoie du mail
$entete = "From: " . $mon_pseudo . " <" . $mon_email . ">\n"; // On prépare l'entête du message
$entete .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$entete .='Content-Transfer-Encoding: 8bit';
if (@mail($mon_email,$son_objet,$msg_pour_moi,$entete) && @mail($son_email,$son_objet,$accuse_pour_lui,$entete)){ // Si le mail a été envoyé
echo "<p style=\"text-align:center\">Votre message a été envoyé, vous recevrez une confirmation par mail.<br /><br />\n"; // On affiche un message de confirmation
echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n"; // Avec un lien de retour vers l'accueil du site
}
else { // Sinon il y a eu une erreur lors de l'envoi
echo "<p style=\"text-align:center\">Un problème s'est produit lors de l'envoi du message.\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a></p>\n"; // On propose un lien de retour vers le formulaire
}
}
?>
</div>
</div>
A voir également:
- Problème avec mon formulaire de contact PHP
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Formulaire de reclamation instagram - Guide
- Ils ont visité mon profil je contact - Forum Réseaux sociaux
- Imessage ne fonctionne plus avec un contact ✓ - Forum iPhone
11 réponses
:-/ je ne peux pas te dire se qui ne va pas dans le code par contre je te propose RVContactForm un contact form AJAX :
https://our.umbraco.com/packages/website-utilities/rvcontactform-multilingual-ajax-contact-form
https://our.umbraco.com/packages/website-utilities/rvcontactform-multilingual-ajax-contact-form
je mexcuse pour ma réponse un peu hors sujet, mais PHP est vraiment une mauvaise affaire.
Dans une seule page on trouve du code interface html, du code php logique et du code SQL de base de donnée.
ça rend le code très illisible.
un conseil de la part ma part (étant passé par php pendant quelque temps), il ne faut trop approfondir dans le PHP.
au lieu, essaie des plates forme comme celle d'adobe avec le MXML et l'ActionScript et celle de java avec JEE, JSP, java... qui consiste tous a separer les couches présentation de celle de controle et de celle Modèle ou Métier (MVC).
bonne chance
Dans une seule page on trouve du code interface html, du code php logique et du code SQL de base de donnée.
ça rend le code très illisible.
un conseil de la part ma part (étant passé par php pendant quelque temps), il ne faut trop approfondir dans le PHP.
au lieu, essaie des plates forme comme celle d'adobe avec le MXML et l'ActionScript et celle de java avec JEE, JSP, java... qui consiste tous a separer les couches présentation de celle de controle et de celle Modèle ou Métier (MVC).
bonne chance
Il est vrai que java est garant de bonne pratique de programmation, mais tout de même php nous offre la possibilité de faire de l'objet, et le mvc est possible, certain framework fonctionne exclusivement en mvc. L'organisation du code reste un choix.
Merci quand même :) Je continue tout de même à chercher ce qui ne va pas et j'espère toujours un peu d'aide... :$
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'aimerais vraiment être en mesure de vous expliquer en détail d'où vient le problème, malheureusement je n'y comprends pas grand chose en PHP, je suis débutante et j'ai encore beaucoup de mal à repérer les erreurs... :S
Tout ce que je peux dire c'est que lorsque j'ai récupéré le formulaire sur internet j'ai changé les valeurs de:
$mon_email = "xxxx@gmail.com"; // Mise en forme du message que vous recevrez
$mon_pseudo = "xxxxx";
$mon_url = "xxxxxx";
en mettant mes données à la place mais même en mettant mon adresse mail, je ne reçois rien...
Le problème vient peut-être du fait que j'ai du php avec du html sur la même page et que je ne les ai pas séparé ? C'est un peu compliqué pour moi désolé :$
Tout ce que je peux dire c'est que lorsque j'ai récupéré le formulaire sur internet j'ai changé les valeurs de:
$mon_email = "xxxx@gmail.com"; // Mise en forme du message que vous recevrez
$mon_pseudo = "xxxxx";
$mon_url = "xxxxxx";
en mettant mes données à la place mais même en mettant mon adresse mail, je ne reçois rien...
Le problème vient peut-être du fait que j'ai du php avec du html sur la même page et que je ne les ai pas séparé ? C'est un peu compliqué pour moi désolé :$
un truc tout simple un tableau à mettre dans la page contact.php
et une page send_contact.php
et ca marche
cdt
<table width="400" border="0" align="center" cellpadding="3" cellspacing="1"> <tr> <td><strong>Contacter rapidement le webmaster </strong></td> </tr> </table> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1"> <tr> <td><form name="form1" method="post" action="send_contact.php"> <table width="100%" border="0" cellspacing="1" cellpadding="3"> <tr> <td width="16%">Sujet</td> <td width="2%">:</td> <td width="82%"><input name="subject" type="text" id="subject" size="50"></td> </tr> <tr> <td>Detail</td> <td>:</td> <td><textarea name="detail" cols="50" rows="4" id="detail"></textarea></td> </tr> <tr> <td>Nom</td> <td>:</td> <td><input name="name" type="text" id="name" size="50"></td> </tr> <tr> <td>Email</td> <td>:</td> <td><input name="customer_mail" type="text" id="customer_mail" size="50"></td> </tr> <tr> <td> </td> <td> </td> <td><input type="submit" name="Submit" value="Submit"> <input type="reset" name="Submit2" value="Reset"></td> </tr> </table> </form> </td> </tr> </table>
et une page send_contact.php
<?php $subject ="$subject"; $message="$detail"; $mail_from="$customer_mail"; $header="from: $name <$mail_from>"; // Entrer votre addresse email $to ='votre_email@aa.fr'; $send_contact=mail($to,$subject,$message,$header); // display message "Message d' information" if($send_contact){ echo "Merci pour votre message , nous le traiterons dès reception des informations. "; } else { echo "ERREUR"; } ?>
et ca marche
cdt
Après avoir tester ton code le champenois et 3 autres que j'ai trouvé sur internet, constatant que je ne recevais toujours pas les mails, j'ai testé sur un autre serveur et ça a finalement fonctionné...
Mon problème n'était donc pas le code mais un problème de serveur ou d'hébergeur... -_-
Je vous remercie en tout cas ! Bonne soirée à tout le monde
Mon problème n'était donc pas le code mais un problème de serveur ou d'hébergeur... -_-
Je vous remercie en tout cas ! Bonne soirée à tout le monde