Stellvia a dit:Hello,
Savez vous comment faire pour minimiser le spam des formulaires de contact qui envois un mail en php ? ( j'aimerais éviter d'utiliser un captcha )
Je me prend des tonnes de mails de robots :/
[/code]}
$pattern ="(top2.info|kliviper|wero@fsvx.com|juee.ca|mochar.com)";
if (ereg($pattern,$vEmail) && ($erreur<>1)){
echo "<br><p class='red'><center><b>Vous n'êtes pas autorisé !</b></center></p>";
$erreur=1;
}
$pattern ="(http|<a href)";
if (ereg($pattern,$vMessage) && ($erreur<>1)){
echo "<br><p class='red'><center><b>Merci de ne pas mettre une adresse web dans la description !</b></center></p>";
$erreur=1;
}
Victor BRITO a dit:Une façon efficace d'éviter de voir son formulaire PHP se transformer en redoutable serveur de spam est de se prémunir contre les injections d'en-tête. Ceux qui ne savent de quoi je parle pourront lire avec intérêt cet article qui, bien qu'il date de 2003, est toujours utile.
if (eregi("\r",$from) || eregi("\n",$from)){
die("Why ?? :(");
}
Je pense quand même qu'il vérifie l'adresse mail entrée dans le formulaire avant d'envoyer le mail :wink:domdom26 a dit:Dépêche toi vite de corriger la situation, car ces spameurs utilisent ton formulaire pour envoyer du spam à d.autres personne et ton ip sera blaclisté pour l'envoie de courriel
http://www.blacklistedip.com/
si jamais tu te fais blacklisté![]()
Essaie avec ce code :Stellvia a dit:Le problème est que la solution proposé
Code:if (eregi("\r",$from) || eregi("\n",$from)){ die("Why ?? :("); }
Ne fonctionne pas , c'est le symbole \ qui bloque et fait bugué eregi ( essayé vous verrez )
if (preg_match("/\r/i",$from) || preg_match("/\n/i",$from)){
die("Why ?? :(");
}
Stellvia a dit:SAlut tout le monde
Bon ... je suis bien embeté , je continus a recevoir des dizaines de mails de spam par jour , qui sont envoyé depuis mon formulaire de contact .
J'aimerais bien comprendre comment faire pour empecher ca , ca me saoule .
Je verifie pourtant l'email de l'expediteur mais rien n'y fait , les mails que je recois ont le sujet modifié , du style :
[Edit OTP : texte supprimé.
Tu veux faire sortir WRI sur des requêtes douteuses ? :lol: ]
bref vous voyez le genre .....
rog a dit:oui mais au passage bidule machin
le captcha ne protege pas contre les injections headers qui visent à utiliser ton script à des fins frauduleuses voir carrément criminelles
rog
rog a dit:lol
ce que je voulais dire c'est qu'il faut au moins les deux
- un système pour bloquer les bots
- un système pour bloquer les injections headers
à savoir que une verification chr(13) ou 10 n'est pas suffisante pour bloquer l'injection avec une injection sur le socket
rog
OTP a dit:Tiens, voilà un exemple : -http://www.thewindpower.net/01-webmaster-eolien.php
Avec un test sur le contenu du champ antispam.
Totalement efficace.
philouseb a dit:Est ce que te demander les sources est déplacé ??
Merci d'avance
<form method="post" action="mail.php">
<p><input type="text" value="Nom" size="35" name="sender_name" onfocus="javascript:this.value=''" /></p>
<p><input type="text" value="Adresse mail" size="35" name="sender_email" onfocus="javascript:this.value=''" /></p>
<p><input type="text" value="Tapez ici le mot 'antispam'" size="35" name="antispam" onfocus="javascript:this.value=''" /></p>
<p><textarea name="message" cols="40" rows="5"></textarea></p>
<p><input type="submit" value="Envoyer" /></p>
</form>
<?php
if ($antispam == 'antispam')
{
$msg = "Nom:\t$sender_name\n";
$msg .= "Mail:\t$sender_email\n";
$msg .= "Message:\t$message\n\n";
$recipient = "webmaster@tonsite.net";
$subject = "Formulaire rempli par un visiteur";
$mailheaders = "From: $sender_email\n";
$mailheaders .= "Reply-To: $sender_email\n\n";
mail($recipient, $subject, $msg, $mailheaders);
echo "<p>Votre message a été envoyé.</p>";
echo "<p>Il sera traité dès que possible.</p>";
}
else
{
echo "<p>Demande non prise en compte, sécurité antispam non satisfaite.</p>";
echo "<p>Merci de saisir 'antispam' dans le champ de sécurité (le troisième).</p>";
echo "<p><a href=\"Javascript:history.go(-1)\">Retour au formulaire</a></p>";
}
?>
OTP a dit:Dans le fichier que contient le formulaire :
Code:<form method="post" action="mail.php"> <p><input type="text" value="Nom" size="35" name="sender_name" onfocus="javascript:this.value=''" /></p> <p><input type="text" value="Adresse mail" size="35" name="sender_email" onfocus="javascript:this.value=''" /></p> <p><input type="text" value="Tapez ici le mot 'antispam'" size="35" name="antispam" onfocus="javascript:this.value=''" /></p> <p><textarea name="message" cols="40" rows="5"></textarea></p> <p><input type="submit" value="Envoyer" /></p> </form>
Dans le fichier mail.php qui s'affiche après le clic sur le bouton :
Code:<?php if ($antispam == 'antispam') { $msg = "Nom:\t$sender_name\n"; $msg .= "Mail:\t$sender_email\n"; $msg .= "Message:\t$message\n\n"; $recipient = "webmaster@tonsite.net"; $subject = "Formulaire rempli par un visiteur"; $mailheaders = "From: $sender_email\n"; $mailheaders .= "Reply-To: $sender_email\n\n"; mail($recipient, $subject, $msg, $mailheaders); echo "<p>Votre message a été envoyé.</p>"; echo "<p>Il sera traité dès que possible.</p>"; } else { echo "<p>Demande non prise en compte, sécurité antispam non satisfaite.</p>"; echo "<p>Merci de saisir 'antispam' dans le champ de sécurité (le troisième).</p>"; echo "<p><a href="Javascript:history.go(-1)"">Retour au formulaire</a></p>"; } ?>
On peut largement améliorer ça, sans doute.
oli004 a dit:J'utilise une variante de ce principe sur mes divers formulaires. La différence est que je cache le champs à tester par un display none via css et je verifie si le champs est vide avant d'envoyer le formulaire.
Je suis parti du principe que les robots remplissent systematiquement les champs avec du contenu aleatoire.
Hors un humain lui, ne voyant pas le champs de test, ben.... il ne le rempli pas.
DOnc si le champs de test est vide > j'envoie le formulaire, et si il est renseigné, je n'envoie rien.
Cette solution fonctionne pour moi depuis plus d'un an sur plusieurs sites.
➡️ Offre MyRankingMetrics ⬅️
pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)
Voir les détails ici