Nous avons un formulaire de demande de renseignements sur notre site (depuis 2011).
Je n'y ai apporté aucune modification et depuis peu il ne nous envoie plus les demandes
en indiquant qu'il est mal complété (voir image)
Je ne sais pas où chercher l'erreur voici le code pour le formulaire :
<!-- début du formulaire -->
<h1>Pour avoir des renseignements merci de remplir TOUS les champs : </h1>
<h3 align="center">Si dans les 48 heures après l'envoi du formulaire vous n'avez pas de nos nouvelles<br />
N'hésitez pas à nous contacter par tel au 02.41.93.07.22</h3>
<?php
$reCaptcha = new ReCaptcha($secret);
if(isset($_POST["g-recaptcha-response"])) {
$resp = $reCaptcha->verifyResponse(
$_SERVER["REMOTE_ADDR"],
$_POST["g-recaptcha-response"]
);
if ($resp != null && $resp->success) {echo "CAPTCHA OK";}
else {echo "CAPTCHA incorrect";}
}
?>
<p> </p>
<form id="contact" method="post" action="send_email.php">
<fieldset>
<legend>Vos coordonnées</legend> <!-- Titre du fieldset -->
<p> </p>
<p><label for="organisation">Oragnisateur :<br />
Association, CE, Comité des fêtes, Centre de Loisirs, APE, Particulier, etc ...</label>
<br /><input type="text" name="organisation" size="50" tabindex="10"/></p>
<p><label for="civilite">Civilité :</label>
<select name="civilite">
<option value="mr" selected="selected">Monsieur</option>
<option value="mme">Madame</option>
</select></p>
<p>
<label for="nom">Nom - prénom : </label>
<br /><input type="text" name="nom" size="40" tabindex="50" /></p>
<p><label for="email">Email :</label><br /><input type="text" id="email" name="email" size="40" tabindex="60" /></p>
<p>
<label for="tel">Téléphone :</label><br />
<input type="text" name="tel" size="40" maxlength="15" tabindex="70" /></p>
<p><input type="radio" name="horaires" value="HB" id="HB" tabindex="80" /> <label for="HB">Aux heures de bureau</label>
<input type="radio" name="horaires" value="HR" id="HR" tabindex="90" /> <label for="HR">Aux heures de repas</label></p>
<p><label for="adresse">Numéro et rue :</label><br /><input type="text" name="adresse" size="40" tabindex="100"/></p>
<p><label for="CP">Code postal :</label><br /><input type="text" name="CP" size="40" tabindex="110" /></p>
<p><label for="ville">Ville :</label><br /><input type="text" name="ville" size="40" tabindex="120" /></p>
<p> </p>
</fieldset>
<fieldset>
<legend>Votre projet</legend> <!-- Titre du fieldset -->
<p> </p>
<p><input type="checkbox" name="option" value="spectacle" tabindex="130" /> <label for="spectacle">Un spectacle de clowns</label><br />
<input type="checkbox" name="option" value="fete-familliale" tabindex="140" /> <label for="fete-familliale">Une fête familiale</label><br />
<input type="checkbox" name="option" value="animation-commerciale" tabindex="150" /> <label for="animation-commerciale">Une animation commerciale</label><br />
<input type="checkbox" name="option" value="autre" tabindex="160" /> <label for="autre">Autre événement</label></p>
<p> </p>
<p>
<label for="precision">Précisions (Jours et heures pour vous appeler, date et heures du spectacle, etc ...) :</label>
<br />
<textarea name="precision" rows="8" cols="50" tabindex="170"></textarea></p><br />
<p>Lieu du spectacle/animation :</p>
<p><input type="radio" name="lieu" value="en_interieur" id="en_interieur" tabindex="180" /> <label for="en_interieur">En intérieur</label><br />
<input type="radio" name="lieu" value="en_exterieur" id="en_exterieur" tabindex="190" /> <label for="en_exterieur">En extérieur</label></p>
<p> </p>
<div class="g-recaptcha" data-sitekey="<?php echo $siteKey; ?>"></div>
</fieldset>
<p><input type="submit" name="submit" value="Envoyer le formulaire" tabindex="200" /> <input type="reset" value="Effacer" tabindex="210" /></p>
</form>
<!-- Fin du formulaire -->
puis voici le code pour send-email :
<!-- Début corps de la page-->
<?php
/*
********************************************************************************************
CONFIGURATION du fichier
********************************************************************************************
*/
// destinataire : NOUS !
$destinataire = "webmaster@clowns-rectoverso.com";
// Messages de confirmation du mail
$message_envoye = "<h1>MERCI !</h1>
<p> </p>
<h2>Votre formulaire a bien été envoyé !</h2>
<p> </p>
<h3>Vous aurez très prochainement des nouvelles des clowns féminins Recto-Verso </h3>";
$message_non_envoye = "Désolées l'envoi du mail a échoué, veuillez réessayer SVP.";
// Messages d'erreur du formulaire
$message_erreur_formulaire = "Merci <a href=\"Demande_de_renseignements.php\">d'envoyer le formulaire</a>.";
$msg_formulaire_invalide = "Il y a une erreur dans votre formulaire<br /><br />
Merci de vérifier :<br /><br />
- que tous les champs sont bien remplis<br />
- que l'email est sans erreur<br />
- qu'il n'y a pas d'erreur dans votre numéro de télépnone.<br /><br />
Cliquez sur la flèche verte de PAGE PRECEDENTE de votre navigateur (IE, Firefox, etc...)<br />
De cette manière vous ne perdrez pas les informations déjà rentrées.</a>";
/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/
// on teste si le formulaire a été soumis
if (!isset($_POST['submit']))
{
// 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); // delete white spaces after & before text
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-z0-9]([-a-z0-9]*[a-z0-9]+)?){1,63}\.)+([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){2,63}$/i";
return (preg_match($pattern,$email)) ? true : false;
};
/* Cette fonction sert à vérifier la syntaxe d'un numéro de téléphone */
function IsTel($tel)
{
$pattern = "/^0[1-68]([-. ]?[0-9]{2}){4}$/";
return (preg_match($pattern,$tel)) ? true : false;
};
// formulaire envoyé, on récupère tous les champs.
$organisation = (isset($_POST['organisation'])) ? Rec($_POST['organisation']) : '';
$civilite = (isset($_POST['civilite'])) ? Rec($_POST['civilite']) : '';
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$tel = (isset($_POST['tel'])) ? Rec($_POST['tel']) : '';
$horaires = (isset($_POST['horaires'])) ? Rec($_POST['horaires']) : '';
$adresse = (isset($_POST['adresse'])) ? Rec($_POST['adresse']) : '';
$CP = (isset($_POST['CP'])) ? Rec($_POST['CP']) : '';
$ville = (isset($_POST['ville'])) ? Rec($_POST['ville']) : '';
$option = (isset($_POST['option'])) ? Rec($_POST['option']) : '';
$precision = (isset($_POST['precision'])) ? Rec($_POST['precision']) : '';
$lieu = (isset($_POST['lieu'])) ? Rec($_POST['lieu']) : '';
// 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é
// On va vérifier les variables et le tel ...
$tel = (IsTel($tel)) ? $tel : ''; // soit le tel est vide si erroné, soit il vaut le tel entré
if (($organisation != '') && ($civilite != '') && ($nom != '') && ($email != '') && ($tel != '') && ($horaires != '') && ($adresse != '') && ($CP != '') && ($ville != '') && ($option != '') && ($precision != '') && ($lieu != ''))
{
// toutes les variables sont remplies, on génère puis envoie le mail
/* Objet du mail */
$objet = 'demande renseignements';
/* Contenu du message */
$msg = 'Bonjour,'."\r\n\r\n";
$msg .= 'cette demande de renseignements nous arrive depuis clowns-rectoverso.com par '. $civilite.' '.$nom."\r\n\r\n";
$msg .= 'Pour une demande de renseignements pour :'."\r\n\r\n";
$msg .= $civilite." ";
$msg .= $nom."\r\n\r\n";
$msg .= $email."\r\n\r\n";
$msg .= $organisation."\r\n\r\n";
$msg .= $tel." aux ";
$msg .= $horaires."\r\n\r\n";
$msg .= $adresse."\r\n";
$msg .= $CP." ";
$msg .= $ville."\r\n\r\n";
$msg .= $option."\r\n\r\n";
$msg .= $lieu."\r\n\r\n";
$msg .= $precision."\r\n";
/* En-têtes de l'e-mail */
$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
// Remplacement de certains caractères spéciaux
$msg = str_replace("'","'",$msg);
$msg = str_replace("’","'",$msg);
$msg = str_replace(""",'"',$msg);
$msg = str_replace('<br>','',$msg);
$msg = str_replace('<br />','',$msg);
$msg = str_replace("<","<",$msg);
$msg = str_replace(">",">",$msg);
$msg = str_replace("&","&",$msg);
// Envoi du mail
if (mail( $destinataire, $objet, $msg, $headers))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des variables (ou plus) est vide ...
echo '<p>'.$msg_formulaire_invalide.'</p>'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>
<!-- Fin corps de la page-->
Voici longtemps que je ne me suis pas plongée dans le codage php et j'avoue être totalement perdue.
Tu peux supprimer tout ce qui est relatif aux magic_quotes_gpc si tu as (ce qui devrait être le cas) PHP >= 5.4.0, ça permettrait de gagner pas mal en lisibilité.
Il y a une faille sur $nom, on peut injecter des entêtes au mail ... (les traitements de Rec étant inappropriés à cet égard).
Je ne pige pas pourquoi tu utilises htmlspecialchars pour envoyer un mail en text/plain surtout qu'après tu resubstitues une partie des entités HTML.
De manière générale, le code pourrait être plus "propre" ainsi que plus convivial pour l'utilisateur : tu lui balances une erreur de validation qui n'est pas précise (champs concernés) et sans moyen de la corriger :/
Oulalala ! j'ai du oublié de cocher quelque part pour être prévenue des réponses (je vais arranger cela)
Merci pour vos réponses.
Philodick : oui le codage date un peu et c'est aussi la raison qui me fait refaire notre site pour le rendre responsive, mais je ne voulais pas trop toucher au formulaire. J'ai compris que je vais devoir le faire !!!
Julp : opsss là tu me parles chinois avec l'accent russe ! Comme dit ci-dessus j'ai fat cela il y a longtemps et je ne comprends pas tout ce que tu dis et ne peux donc pas répondre.
Je vais sérieusement remettre le nez dedans pour le refaire plus simple et plus propre comme vous et je le souhaite.
Encore merci pour le temps que vous m'avez accordé.
<!-- Début formulaire-->
<?php
error_reporting(E_ALL);
/* destinataire de la demande de renseignements */
$destinataire = 'andrea-acces@gmx.fr'; // Déclaration de l'adresse de destination.
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#",$destinataire)) // On filtre les serveurs qui rencontrent des bogues.
{
$passage_ligne = "\r\n";
}
else
{
$passage_ligne = "\n";
}
/* header du mail */
$header = 'From: ' . $civilite . '<' . $nom . '<' . $email . '>';
$header .= 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$header .= 'Content-Transfer-Encoding: 8bit'."\r\n" ;
/* sujet du mail */
$sujet = 'demande de renseignements';
$sujet = '=?UTF-8?B?'.base64_encode($sujet).'?=';
/* message du mail */
$message = 'Bonjour,'."\r\n\r\n";
$message .= 'cette demande de renseignements nous arrive depuis clowns-rectoverso.com par '.$civilite.' '.$nom."\r\n\r\n";
$message .= $civilite." ";
$message .= $nom."\r\n\r\n";
$message .= $organisation."\r\n\r\n";
$message .= $email."\r\n\r\n";
$message .= $tel." ";
$message .= $horaires."\r\n\r\n";
$message .= $cp." ";
$message .= $ville."\r\n\r\n";
$message .= $projet."\r\n\r\n";
$message .= $precision."\r\n";
if(!mail("andrea-acces@gmx.fr", $sujet, $message, $headers)){
echo "erreur";
}else{
header("location:send_email-2018.php");
}
// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
{
// on vérifie tous les champs.
$recupNom = $_POST['nom'];
$recupOrganisateur = $_POST['organisateur'];
$recupCp = $_POST['cp'];
$recupVille = $_POST['ville'];
$recupPrecision = $_POST['precision'];
if($recupNom != "" && $recupOrganisateur != "" && $recupCp != "" && $recupVille != "" && $recupPrecision != ""); { // si les saisies ne sont pas vides
echo $_POST['nom'];
echo $_POST['organisateur'];
echo $_POST['cp'];
echo $_POST['ville'];
echo $_POST['precision'];
}
$tel = "04-77-55-88-99";
if ( preg_match ( " #^[0-9]{2}[-/ ]?[0-9]{2}[-/ ]?[0-9]{2}[-/ ]?[0-9]{2}[-/ ]?[0-9]{2}?$# " , $tel ) ){
echo "Le téléphone est valide";
}
if(isset($_POST['civilite'])){
$recupCivilite = $_POST['civilite'];
}
if(isset($_POST['horaires'])){
$recuphoraires = $_POST['horaires'];
}
if(isset($_POST['projet'])){
$recupProjet = $_POST['projet'];
}
$email = "dany@gmail.com";
if ( preg_match ( " /^.+@.+\.[a-zA-Z]{2,}$/ " , $email ) )
{
echo "L'adresse eMail est valide";
}
// Envoi du mail
if (mail( $destinataire, $sujet, $message, $header))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.'</p>'."\n";
};
// fin du if (!isset($_POST['envoi']))
// Messages de confirmation du mail
$message_envoye = "<h1>MERCI !</h1>
<p> </p>
<h2>Votre formulaire a bien été envoyé !</h2>
<p> </p>
<h3>Vous aurez très prochainement des nouvelles des clowns féminins Recto-Verso </h3>";
$message_non_envoye = "Désolées l'envoi du mail a échoué, veuillez réessayer SVP.";
// Messages d'erreur du formulaire
$message_erreur_formulaire = "Merci <a href=\"Demande_de_renseignements.php\">d'envoyer le formulaire</a>.";
$msg_formulaire_invalide = "Il y a une erreur dans votre formulaire<br /><br />
Merci de vérifier :<br /><br />
- que tous les champs sont bien remplis<br />
- que l'email est sans erreur<br />
- qu'il n'y a pas d'erreur dans votre numéro de télépnone.<br /><br />
Cliquez sur la flèche verte de PAGE PRECEDENTE de votre navigateur (IE, Firefox, etc...)<br />
De cette manière vous ne perdrez pas les informations déjà rentrées.</a>";
?>
Pouvez-vous m'aider a trouver les erreurs car je reçoit bien un message (40 dans le même temps en fait !!! )
mais je n'ai pas d'adresse d'expéditeur et le message est vide :
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
N'oubliez pas d'activer les erreurs PDO.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.