Erreur formulaire php
Résolu
et24
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
et24 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
et24 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je créé un site internet où j'ai ajouté un script php d'un formulaire protégé par captcha. Tout à l'air de bien fonctionner, jusqu'à ce que je remplisse les champs qui le compose pour le tester. Là, il me retourne à chaque fois "erreur, veuillez réessayer s'il vous plait". Pourtant je pense avoir bien rempli les champs comme indiqué (mes connaissances en php sont encore faible, je suis en plein apprentissage ^^).
Merci de votre attention, je vous poste le code source:
(je précise qu'à la base j'ai bien rempli les champs comme indiqué. J'ai juste modifié preg_match à la place de ereg parce que sinon il me ressortait une erreur de champs).
Merci d'avance!
je créé un site internet où j'ai ajouté un script php d'un formulaire protégé par captcha. Tout à l'air de bien fonctionner, jusqu'à ce que je remplisse les champs qui le compose pour le tester. Là, il me retourne à chaque fois "erreur, veuillez réessayer s'il vous plait". Pourtant je pense avoir bien rempli les champs comme indiqué (mes connaissances en php sont encore faible, je suis en plein apprentissage ^^).
Merci de votre attention, je vous poste le code source:
(je précise qu'à la base j'ai bien rempli les champs comme indiqué. J'ai juste modifié preg_match à la place de ereg parce que sinon il me ressortait une erreur de champs).
Merci d'avance!
<?php // Dans la ligne qui suit, remplacer ## par l'adresse email du webmaster, à laquelle les messages devront être envoyés $email_webmaster = "##"; // === traitement des données du formulaire ============================================================ if (isset($_POST["envoyer"])){ // le formulaire a été soumis $etat = "erreur"; // Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur // --- mise en forme des champs saisis dans le formulaire lors de sa soumission --- if (isset($_POST["email_expediteur"])) { $_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"])); } if (isset($_POST["titre"])) { $_POST["titre"]=trim(stripslashes($_POST["titre"])); } if (isset($_POST["message"])) { $_POST["message"]=trim(stripslashes($_POST["message"])); } // --- test de la validité des champs saisis --- if (empty($_POST["email_expediteur"])) { // il manque l'email de l'expéditeur $erreur="Saisissez votre adresse email"; } elseif (!preg_match("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$^",$_POST["email_expediteur"])){ // l'adresse e-mail n'est pas valide $erreur="Votre adresse e-mail n'est pas valide, merci de réessayer."; } elseif (empty($_POST["message"])) { // le message est vide $erreur="Saisissez un message svp"; } elseif (empty($_POST["code"])) { // le code n'est pas saisi $erreur="Saisissez le code de verification s'il vous plait."; } else { // --- Vérification de la validité du code captcha --- if (chk_crypt($_POST['code'])) // --- tous les champs sont correctement remplis: on pourra envoyer le mail --- $etat="ok"; // --- Le code captcha n'est pas valide --- else $erreur="Code de verification non valide, merci de réessayer."; } } else { // --- le formulaire n'a pas été soumis --- $etat="attente"; } // === fin de traitement des données du formulaire ======================================================= ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Formulaire de contact</title> </head> <body> <?php if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur if ($etat=="erreur"){ //le formulaire a été soumis avec une erreur echo "<p><strong>".$erreur."</strong></p>\n"; // afficher le message d'erreur } ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <p><label for="email_expediteur">Votre adresse e-mail (obligatoire):</label><br /> <input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php if (!empty($_POST["email_expediteur"])) { // l'adresse email de l'expéditeur a été saisie: la réafficher echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES); } ?>" /> </p> <p><label for="titre">Type de bug (facultatif):</label><br /> <input type="text" size="40" name="titre" id="titre" value="<?php if (!empty($_POST["titre"])) { // le titre du message a été saisi: le réafficher echo htmlspecialchars($_POST["titre"],ENT_QUOTES); } ?>" /> </p> <p><label for="message">Message (obligatoire):</label><br /> <textarea name="message" id="message" cols="40" rows="5"><?php if (isset($_POST["message"])) { // le message a été saisi: le réafficher echo htmlspecialchars($_POST["message"],ENT_QUOTES); } ?></textarea> </p> Veuillez entrez le code ci-dessous: <?php dsp_crypt(0,1); ?> <p><input type="text" name="code" /></p> <p><input type="submit" name="envoyer" value="Envoyer" /> </p> </form> <?php } else { // le formulaire a été soumis sans erreur, on envoie le mail $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n"; $entete .= "MIME-Version: 1.0"; if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)){ // mail envoyé echo "Votre message a été envoyé.<br />\n"; echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message</a>\n"; } else { // erreur lors de l'envoi du mail echo "Un problème s'est produit lors de l'envoi du message.\n"; echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez s'il vous plait.</a>\n"; } } ?> </div>
A voir également:
- Erreur formulaire php
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Erreur 0x80070643 - Accueil - Windows
- Expert php pinterest - Télécharger - Langages
7 réponses
Salut, essaye ça pour voir, j'ai modifier quelques trucs ...dont...
1 - L'imbrication des if else, parce que s'était un peut louche ... :)
2 - Le filtre de validation des emails ...
3 - L'affichage des erreurs, car avant, si il y avait plusieurs erreurs, il ne s'afficherai qu'une seule, et ça sera toujours la dernière ...
4 - et a présent $etat est un booléen, si vrai, le formulaire est envoyé, si faux, il affiche les erreurs ...
1 - L'imbrication des if else, parce que s'était un peut louche ... :)
2 - Le filtre de validation des emails ...
3 - L'affichage des erreurs, car avant, si il y avait plusieurs erreurs, il ne s'afficherai qu'une seule, et ça sera toujours la dernière ...
4 - et a présent $etat est un booléen, si vrai, le formulaire est envoyé, si faux, il affiche les erreurs ...
<?php $email_webmaster = "##"; if (isset($_POST["envoyer"])) { $etat = true; if (isset($_POST["email_expediteur"])) $email_expediteur = trim(stripslashes($_POST["email_expediteur"])); elseif (empty($_POST["email_expediteur"])) { $erreur1 = "Saisissez votre adresse email"; $etat = false; } elseif ((filter_var($_POST["email_expediteur"], FILTER_VALIDATE_EMAIL) === FALSE)){ $erreur1 = "Votre adresse e-mail n'est pas valide, merci de réessayer."; $etat = false; } if (isset($_POST["titre"])) $titre = trim(stripslashes($_POST["titre"])); if (isset($_POST["message"])) $message = trim(stripslashes($_POST["message"])); elseif (empty($_POST["message"])) { $erreur2 = "Saisissez un message svp"; $etat = false; } if (empty($_POST["code"])) { $erreur3 = "Saisissez le code de verification s'il vous plait."; $etat = false; } elseif (!empty($_POST["code"]) AND !chk_crypt($_POST['code'])) { $etat = false; $erreur3 = "Code de verification non valide, merci de réessayer."; } } else $etat = false; if($etat) { $entete = "From: ".$email_expediteur." <".$email_expediteur.">\n"; $entete .= "MIME-Version: 1.0"; if (mail($email_webmaster,$titre,$message,$entete)){ echo "Votre message a été envoyé.<br />\n"; echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message</a>\n"; } else { echo "Un problème s'est produit lors de l'envoi du message.\n"; echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez s'il vous plait.</a>\n"; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Formulaire de contact</title> </head> <body> <?php if ($etat == false AND (isset($erreur1))){ echo "<p><strong>".$erreur1."</strong></p>\n"; } elseif ($etat == false AND (isset($erreur2))){ echo "<p><strong>".$erreur2."</strong></p>\n"; } elseif ($etat == false AND (isset($erreur3))){ echo "<p><strong>".$erreur3."</strong></p>\n"; } ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <p><label for="email_expediteur">Votre adresse e-mail (obligatoire):</label><br /> <input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php if (!empty($_POST["email_expediteur"])) echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES); ?>" /> </p> <p><label for="titre">Type de bug (facultatif):</label><br /> <input type="text" size="40" name="titre" id="titre" value="<?php if (!empty($_POST["titre"])) echo htmlspecialchars($_POST["titre"],ENT_QUOTES); ?>" /> </p> <p><label for="message">Message (obligatoire):</label><br /> <textarea name="message" id="message" cols="40" rows="5"><?php if (isset($_POST["message"])) echo htmlspecialchars($_POST["message"],ENT_QUOTES); ?></textarea> </p> Veuillez entrez le code ci-dessous: <?php dsp_crypt(0,1); ?> <p><input type="text" name="code" /></p> <p><input type="submit" name="envoyer" value="Envoyer" /></p> </form>
merci JooS, je teste ça tout de suite et je reposte!
en tout cas merci
tito23, je travaillais en local mais je fais les tests directement sur mon hébergeur, ça m'évite ainsi de config apache et de voir directement le résultat (si mon hébergeur le tolère)
en tout cas merci
tito23, je travaillais en local mais je fais les tests directement sur mon hébergeur, ça m'évite ainsi de config apache et de voir directement le résultat (si mon hébergeur le tolère)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
malheureusement, le code que tu a arrangé n'as pas marché :s
j'ai opté pour un code sans captcha, mais je me heurte à un nouveau problème:
le message s'envoie niquel quand on remplit les champs mais je ne reçois rien dans ma boite mail. Je l'ai testé sur mon hébergeur. Se pourrait-il que ça soit en rapport avec mon hébergeur?
j'ai opté pour un code sans captcha, mais je me heurte à un nouveau problème:
le message s'envoie niquel quand on remplit les champs mais je ne reçois rien dans ma boite mail. Je l'ai testé sur mon hébergeur. Se pourrait-il que ça soit en rapport avec mon hébergeur?
essaie de changer ça
$entete = "From: ".$email_expediteur." <".$email_expediteur.">\n";par
$entete = "From: ".$email_expediteur;
Alors après avoir testé vos solutions, j'ai opté pour une solution plus radicale .. ^^
j'ai changé d'hébergeur, et il se trouve que ça venait bien de lui. Pourtant, la fonction mail () était soi disant activée. J'ai retesté mon code de départ, et il marche parfaitement bien malgré quelques bizarreries que tu as souligné JooS ^^
merci beaucoup à vous deux en tous cas!
bonne soirée
j'ai changé d'hébergeur, et il se trouve que ça venait bien de lui. Pourtant, la fonction mail () était soi disant activée. J'ai retesté mon code de départ, et il marche parfaitement bien malgré quelques bizarreries que tu as souligné JooS ^^
merci beaucoup à vous deux en tous cas!
bonne soirée