Petit bête PHP
gmatg
-
gmatg -
gmatg -
Salut à tous,
Je reviens vers vous car vous m'aviez bine aider la dernière fois.
Aujourd'hui, je rencontre un dernier problème Quand je teste mon formulaire de contact sur Xampp, je rempli tous les champs et "j'envoi" mon formulaire. Et là, il me dit : "Vous devez d'abord envoyer et remplir le formulaire", qui est donc ; $message_erreur_formulaire
Que faut-il faire ? Merci beaucoup beaucoup de m'aider
Je reviens vers vous car vous m'aviez bine aider la dernière fois.
Aujourd'hui, je rencontre un dernier problème Quand je teste mon formulaire de contact sur Xampp, je rempli tous les champs et "j'envoi" mon formulaire. Et là, il me dit : "Vous devez d'abord envoyer et remplir le formulaire", qui est donc ; $message_erreur_formulaire
Que faut-il faire ? Merci beaucoup beaucoup de m'aider
<?php $destinataire = '***@***'; $copie = 'oui'; $message_envoye = "Votre message nous est bien parvenu, l'équipe vous répondera le plus vite possible !"; $retour_accueil = "Pour revenir à <a href=\"Accueil.html\">l'accueil</a>"; $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP."; $message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.html\">envoyer et remplir le formulaire</a>."; $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur."; if (!isset($_POST['envoi'])) { echo '<p>'.$message_erreur_formulaire.'</p>'."\n"; } else { function Rec($text) { $text = htmlspecialchars(trim($text), ENT_QUOTES); if (1 === get_magic_quotes_gpc()) { $text = stripslashes($text); } $text = nl2br($text); return $text; }; 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; } $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; $mail = (isset($_POST['mail'])) ? Rec($_POST['mail']) : ''; $objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : ''; $message = (isset($_POST['message'])) ? Rec($_POST['message']) : ''; $mail = (IsEmail($mail)) ? $mail : ''; if (($nom != '') && ($mail != '') && ($objet != '') && ($message != '')) { $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'From:'.$nom.' <'.$mail.'>' . "\r\n" . 'Reply-To:'.$mail. "\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(); if ($copie == 'oui') { $cible = $destinataire.';'.$mail; } else { $cible = $destinataire; }; $caracteres_speciaux = array(''', '’', '"', '<br>', '<br />', '<', '>', '&', '…', '’', '‘'); $caracteres_remplacement = array("'", "'", '"', '', '', '<', '>', '&', '...', '>>', '<<' ); $objet = str_replace($caracteres_speciaux, $caracteres_remplacement, $objet); $message = str_replace($caracteres_speciaux, $caracteres_remplacement, $message); $num_emails = 0; $tmp = explode(';', $cible); foreach($tmp as $mail_destinataire) { if (mail($mail_destinataire, $objet, $message, $headers)) $num_emails++; } if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1))) { echo '<p>'.$message_envoye.'</p>'; echo '<p>'.$retour_accueil.'</p>'."\n"; } else { echo '<p>'.$message_non_envoye.'</p>'; }; } else { echo '<p>'.$message_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n"; }; }; ?>
A voir également:
- Petit bête PHP
- Easy php - Télécharger - Divers Web & Internet
- Petit 2 ✓ - Forum Bureautique
- Un pense-bête - Guide
- Trier du plus petit au plus grand excel - Guide
- Comment écrire mètre carré avec un m+2 expos? ✓ - Forum Windows
2 réponses
Bonjour,
Avant tout, il faut correctement écrire ton code...
Les fonctions ne se placent pas dans le IF .. mais en dehors ( au début du code par exemple )
Il faut également activer l'affichage des erreurs PHP ( ce qui aurait montrer une erreur à la ligne 71 )
De plus, la norme veut que les IF / ELSE .. s'écrivent de cette façon ( l'accoloade en bout de ligne )
et même pour un if avec une seule ligne de code à exécuter... utiliser les accolades évite d'éventuelles futures erreurs.
Bref, ton code corrigé devrait ressembler à ça
Et pour en revenir à ton message d'erreur... et bien c'est qu'il entre dans le IF ....
Donc, ta variable $_POST['envoi'] n'existe pas.
L'as tu bien mis dans ton formulaire ?
As tu bien précisé la méthode POST ?
Il serait bien de nous montrer le code de ton formulaire.
Avant tout, il faut correctement écrire ton code...
Les fonctions ne se placent pas dans le IF .. mais en dehors ( au début du code par exemple )
Il faut également activer l'affichage des erreurs PHP ( ce qui aurait montrer une erreur à la ligne 71 )
De plus, la norme veut que les IF / ELSE .. s'écrivent de cette façon ( l'accoloade en bout de ligne )
if (condition ) { // si condition vraie } else { // si condition fausse }
et même pour un if avec une seule ligne de code à exécuter... utiliser les accolades évite d'éventuelles futures erreurs.
Bref, ton code corrigé devrait ressembler à ça
<?php // Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // Fonctions function Rec($text) { $text = htmlspecialchars(trim($text), ENT_QUOTES); if (1 === get_magic_quotes_gpc()) { $text = stripslashes($text); } $text = nl2br($text); return $text; }; 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; } $destinataire = '***@***'; $copie = 'oui'; $message_envoye = "Votre message nous est bien parvenu, l'équipe vous répondera le plus vite possible !"; $retour_accueil = "Pour revenir à <a href=\"Accueil.html\">l'accueil</a>"; $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP."; $message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.html\">envoyer et remplir le formulaire</a>."; $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur."; if (!isset($_POST['envoi'])) { echo '<p>'.$message_erreur_formulaire.'</p>'."\n"; // si tu arrives là... c'est que la variable POST envoi n'existe pas ! // }else { $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; $mail = (isset($_POST['mail'])) ? Rec($_POST['mail']) : ''; $objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : ''; $message = (isset($_POST['message'])) ? Rec($_POST['message']) : ''; $mail = (IsEmail($mail)) ? $mail : ''; if (($nom != '') && ($mail != '') && ($objet != '') && ($message != '')) { $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'From:'.$nom.' <'.$mail.'>' . "\r\n" . 'Reply-To:'.$mail. "\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(); if ($copie == 'oui'){ $cible = $destinataire.';'.$mail; } else{ $cible = $destinataire; } $caracteres_speciaux = array("'", "’", '"', '<br>', '<br />', '<', '>', '&','…',"’", "‘"); $caracteres_remplacement = array("'","'",'"','','', '<', '>','&','...', '>>','<<'); $objet = str_replace($caracteres_speciaux, $caracteres_remplacement, $objet); $message = str_replace($caracteres_speciaux, $caracteres_remplacement, $message); $num_emails = 0; $tmp = explode(';', $cible); foreach($tmp as $mail_destinataire) { if (mail($mail_destinataire, $objet, $message, $headers)) { $num_emails++; } } if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1))){ echo '<p>'.$message_envoye.'</p>'; echo '<p>'.$retour_accueil.'</p>'."\n"; } else { echo '<p>'.$message_non_envoye.'</p>'; } } else { echo '<p>'.$message_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n"; }; }; ?>
Et pour en revenir à ton message d'erreur... et bien c'est qu'il entre dans le IF ....
Donc, ta variable $_POST['envoi'] n'existe pas.
L'as tu bien mis dans ton formulaire ?
As tu bien précisé la méthode POST ?
Il serait bien de nous montrer le code de ton formulaire.