par
RealJesus » 25 mars 2021, 15:43
Utiliser un
mail() en utf8 et faire en sorte que le sujet du message soit aussi correct.
c'est fait, mais même en tapant "demande de devis" plutôt que "test" en sujet, c'est pareil... j'ai créé un filtre sur ma boite mail (puisque j'ai ajouté en dur dans le code "envoyé depuis mon site web" pour éviter que ça aille dans les spams.
Par contre, tu aurais une piste (pour un débutant) pour sécuriser un peu le formulaire et éviter de me faire spamm pour rien ?
Tu assignes des boutons à $Previsualiser et $Envoi, les boutons en questions, que tu réaffiche en bas du form avec $bas_formulaire, supprime carrément <?php echo $bas_formulaire;?> (vers la ligne 664) et suppriome aussi enctype="multipart/form-data" (dans la balise <form ... enctype="multipart/form-data">) qui ne te servira pas pour ton utilisation.
c'est fait aussi, mais j'ai corrigé comme suit :
<?php
if (isset($_POST['message']))
{
// La variable $verif va nous permettre d'analyser si la sémantique de l'email est bonne
$verif='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';
//quelques remplacements pour les specialchars
$message=preg_replace('#(<|>)#', '-', $_POST['message']);
$message=str_replace('"', "'",$message);
$message=str_replace('&', 'et',$message);
$objet=preg_replace('#(<|>)#', '-', $_POST['objet']);
$objet=str_replace('"', "'",$objet);
$objet=str_replace('&', 'et',$objet);
// On assigne et/ou protège nos variables
$votremail=stripslashes(htmlentities($_POST['votremail']));
$message=stripslashes(htmlspecialchars($message));
$objet=stripslashes(htmlspecialchars($objet));
//input envoi/previsualiser
$envoi=htmlentities($_POST['envoi']);
$previsualiser=htmlentities($_POST['previsualiser']);
//on enlève les espaces
$votremail=trim($votremail);
$message=trim($message);
$objet=trim($objet);
$apercu_resultat='<p>Aperçu du résultat :</p>';
/*On vérifie si l'e mail et le message sont pleins, et on agit en fonction.
(on affiche Apercu du resultat, tel ou tel champ est vide, etc...*/
//Si ca ne vas pas (mal rempli, mail non valide...)
if((empty($message))or(empty($objet))or(!preg_match($verif,$votremail)))
{
//les 3 champs sont vides
if(empty($votremail)and(empty($message))and(empty($objet)))
{
echo '<p>Tous les champs sont vides.</p>';
$message='';$votremail='';$objet='';$apercu_resultat='';
}
//un des champs est vide
else
{
if(!preg_match($verif,$votremail))
echo'<p>Votre adresse e-mail n\'est pas valide.</p>';
else
{
echo'<p>Il faut remplir tous les champs !</p>';
if(empty($message))
$apercu_resultat='';
}
}
}
//Si les deux sont pleins et que l'adresse est valide, on envoie ou on prévisualise sans envoi
else
{
$domaine=preg_replace('#[^@]+@(.+)#','$1',$votremail);
$DomaineMailExiste=checkdnsrr($domaine,'MX');
if(!$DomaineMailExiste)
echo'<p>Le nom de domaine de l\'adresse e-mail que vous avez donné n\'existe pas.</p>';
elseif(!empty($previsualiser))
{
$apercu_resultat='<p>Votre message et votre adresse e-mail sont valides et prêts à être envoyés.
<br>Vous n\'avez plus qu\'à cliquer sur le bouton "Envoyer".<br>Prévisualisation :</p>';
$Previsualiser='';
}
elseif(!empty($envoi))
{
$objet='[envoyé depuis mon site web] : '.$objet;
$headers='From:'.$votremail."\r\n".'To:'.$mail."\r\n".'Subject:'.$objet."\r\n".'Content-type: text/html; charset=UTF-8'."\r\n".'Sent:'.date('l, F d, Y H:i');
if(mail($destinataire,$objet,$message,$headers))
{
echo '<p>Votre message a bien été envoyé. Merci.</p><p><a href="/">Retour à la page d\'accueil</a></p>';
$Envoi='';
$Previsualiser='';
}
else
echo'<p>Un problème est survenu durant l\'envoi du mail.</p>';
}
else
echo'<p>Une condition innatendue est survenue lors de l\'exécution du script.</p>';
}
echo $apercu_resultat;
}
else
{
echo '<p>Vous pouvez utiliser ce formulaire pour me contacter.</p>';
$votremail='';$message='';
}
?>
<form id="myForm" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<div class="input-line">
<input id="name" type="text" placeholder="Name" class="input-name" name="Name" value="<?php echo( $from ); ?>" name="from" required>
<input id="email" type="email" placeholder="Email" class="input-name" value="<?php echo $votremail; ?>" name="votremail" required>
</div>
<input type="text" id="subject" placeholder="subject" class="input-subject" value="<?php echo( $object ); ?>" name="objet" required>
<textarea id ="body" class="input-textarea" placeholder="message" name="message" required><?php echo $message; ?></textarea>
<button name="envoi" type="submit" id ="submit" tabindex="4" value="Envoyer">Envoyer</button>
<button type="submit" name="previsualiser" tabindex="3" value="Prévisualiser">Prévisualiser</button>
</form>
donc du coup, le bouton envoyer fonctionne, mais pas le bouton prévisualiser.... any hint ?
Encore une fois, merci, you rock !

[quote=two3d post_id=466883 time=1616675597 user_id=18101]
Utiliser un [url=https://www.c2script.com/scripts/formulaire-de-contact-php-s6.html]mail() en utf8[/url] et faire en sorte que le sujet du message soit aussi correct.[/quote]
c'est fait, mais même en tapant "demande de devis" plutôt que "test" en sujet, c'est pareil... j'ai créé un filtre sur ma boite mail (puisque j'ai ajouté en dur dans le code "envoyé depuis mon site web" pour éviter que ça aille dans les spams.
Par contre, tu aurais une piste (pour un débutant) pour sécuriser un peu le formulaire et éviter de me faire spamm pour rien ?
[quote=two3d post_id=466883 time=1616675597 user_id=18101]
Tu assignes des boutons à [b]$Previsualiser[/b] et [b]$Envoi[/b], les boutons en questions, que tu réaffiche en bas du form avec [b]$bas_formulaire[/b], supprime carrément [b]<?php echo $bas_formulaire;?> [/b] (vers la ligne 664) et suppriome aussi [b]enctype="multipart/form-data"[/b] (dans la balise [b]<form ... enctype="multipart/form-data">[/b]) qui ne te servira pas pour ton utilisation.
[/quote]
c'est fait aussi, mais j'ai corrigé comme suit :
[PHP]<?php
if (isset($_POST['message']))
{
// La variable $verif va nous permettre d'analyser si la sémantique de l'email est bonne
$verif='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';
//quelques remplacements pour les specialchars
$message=preg_replace('#(<|>)#', '-', $_POST['message']);
$message=str_replace('"', "'",$message);
$message=str_replace('&', 'et',$message);
$objet=preg_replace('#(<|>)#', '-', $_POST['objet']);
$objet=str_replace('"', "'",$objet);
$objet=str_replace('&', 'et',$objet);
// On assigne et/ou protège nos variables
$votremail=stripslashes(htmlentities($_POST['votremail']));
$message=stripslashes(htmlspecialchars($message));
$objet=stripslashes(htmlspecialchars($objet));
//input envoi/previsualiser
$envoi=htmlentities($_POST['envoi']);
$previsualiser=htmlentities($_POST['previsualiser']);
//on enlève les espaces
$votremail=trim($votremail);
$message=trim($message);
$objet=trim($objet);
$apercu_resultat='<p>Aperçu du résultat :</p>';
/*On vérifie si l'e mail et le message sont pleins, et on agit en fonction.
(on affiche Apercu du resultat, tel ou tel champ est vide, etc...*/
//Si ca ne vas pas (mal rempli, mail non valide...)
if((empty($message))or(empty($objet))or(!preg_match($verif,$votremail)))
{
//les 3 champs sont vides
if(empty($votremail)and(empty($message))and(empty($objet)))
{
echo '<p>Tous les champs sont vides.</p>';
$message='';$votremail='';$objet='';$apercu_resultat='';
}
//un des champs est vide
else
{
if(!preg_match($verif,$votremail))
echo'<p>Votre adresse e-mail n\'est pas valide.</p>';
else
{
echo'<p>Il faut remplir tous les champs !</p>';
if(empty($message))
$apercu_resultat='';
}
}
}
//Si les deux sont pleins et que l'adresse est valide, on envoie ou on prévisualise sans envoi
else
{
$domaine=preg_replace('#[^@]+@(.+)#','$1',$votremail);
$DomaineMailExiste=checkdnsrr($domaine,'MX');
if(!$DomaineMailExiste)
echo'<p>Le nom de domaine de l\'adresse e-mail que vous avez donné n\'existe pas.</p>';
elseif(!empty($previsualiser))
{
$apercu_resultat='<p>Votre message et votre adresse e-mail sont valides et prêts à être envoyés.
<br>Vous n\'avez plus qu\'à cliquer sur le bouton "Envoyer".<br>Prévisualisation :</p>';
$Previsualiser='';
}
elseif(!empty($envoi))
{
$objet='[envoyé depuis mon site web] : '.$objet;
$headers='From:'.$votremail."\r\n".'To:'.$mail."\r\n".'Subject:'.$objet."\r\n".'Content-type: text/html; charset=UTF-8'."\r\n".'Sent:'.date('l, F d, Y H:i');
if(mail($destinataire,$objet,$message,$headers))
{
echo '<p>Votre message a bien été envoyé. Merci.</p><p><a href="/">Retour à la page d\'accueil</a></p>';
$Envoi='';
$Previsualiser='';
}
else
echo'<p>Un problème est survenu durant l\'envoi du mail.</p>';
}
else
echo'<p>Une condition innatendue est survenue lors de l\'exécution du script.</p>';
}
echo $apercu_resultat;
}
else
{
echo '<p>Vous pouvez utiliser ce formulaire pour me contacter.</p>';
$votremail='';$message='';
}
?>[/PHP]
[html] <form id="myForm" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<div class="input-line">
<input id="name" type="text" placeholder="Name" class="input-name" name="Name" value="<?php echo( $from ); ?>" name="from" required>
<input id="email" type="email" placeholder="Email" class="input-name" value="<?php echo $votremail; ?>" name="votremail" required>
</div>
<input type="text" id="subject" placeholder="subject" class="input-subject" value="<?php echo( $object ); ?>" name="objet" required>
<textarea id ="body" class="input-textarea" placeholder="message" name="message" required><?php echo $message; ?></textarea>
<button name="envoi" type="submit" id ="submit" tabindex="4" value="Envoyer">Envoyer</button>
<button type="submit" name="previsualiser" tabindex="3" value="Prévisualiser">Prévisualiser</button>
</form>[/html]
donc du coup, le bouton envoyer fonctionne, mais pas le bouton prévisualiser.... any hint ?
Encore une fois, merci, you rock ! :)