Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Debutant] Enchainer 2 verificati ons lors du traitement d'un formulaire

1 réponse
Avatar
Multipass
Bonsoir,

Débutant en php, j'avais mis un petit code sur mon site pour que le
contenu d'un formulaire soit envoyé sur mon adresse e-mail. Manque de
bol, profitant d'une faille de la fonction mail(), un robot spammeur
m'envoyait plusieurs dizaines de messages par jour, ainsi qu'à d'autres
personnes mises en copie.

Heureusement, une site (le site :
http://dwef.12h26.com/82-injection-header-mail.htm ) parle de la manière
de bloquer le robot et donne un code à intégrer qui est le suivant :

<?php
if (eregi(chr(10),$mail) || eregi(chr(13),$mail) ||
eregi('Content-Type:',$mail)) {
exit('SPAM Injection Error :(');
}
?>

Manque de bol, je ne suis pas un as du php et je n'arrive pas à intégrer
ça dans mon code. J'en suis là (mais bien sûr, ça ne marche pas) :


<?php

// envoi d'un message via le site a l'aide de php

// récupération des infos du posteur

$_POST['pseudo'] = $pseudo;
$_POST['email'] = $email;
$_POST['message'] = $message;

// les informations à propos du destinataire (moi)

$from = "Site Baleine Prod <webmaster@".$_ENV["SERVER_NAME"].">";
$to = "ici se trouve mon adresse e-mail";
$objet = "Message depuis la page contact du site Baleine Prod";
$headers = "X-Useless: true\nFrom: $from\nReply-To: $email";

// un peu plus délicat : le contenu du message

$contenu = "*****************************\nVoici un message de :
$pseudo\nSon adresse e-mail : $email\nSon message :
$message\n*****************************\n\n\n";

// on vérifie qu'il ne s'agit pas d'un vilain robot spammeur

if (eregi(chr(10),$mail) || eregi(chr(13),$mail) ||
eregi('Content-Type:',$mail)) {
exit('SPAM Injection Error :(');
}

// et zou, à la poste !

if (mail($to, $objet, $contenu, $headers)){

// on retourne à la page de confirmation

header("Location: confirmation.php");

// sauf si une erreur survient et que le message ne peut pas être envoyé

}else{
header("Location: erreur.php");
}

?>

Je suis sûr que c'est trivial pour quelqu'un qui maîtrise le php, alors
si vous avez 2 minutes à m'accorder je vous remercie d'avance.

@+


--
Sans BLAGUE pour me repondre
--

1 réponse

Avatar
Marc

$contenu = "*****************************nVoici un message de :
$pseudonSon adresse e-mail : $emailnSon message :
$messagen*****************************nnn";

// on vérifie qu'il ne s'agit pas d'un vilain robot spammeur

if (eregi(chr(10),$mail) || eregi(chr(13),$mail) ||
eregi('Content-Type:',$mail)) {
exit('SPAM Injection Error :(');
}


ici, il faut soit tester le contenu du mail ou l'entete.

* si entete : if(eregi(chr(10),$email) || ...)# pour l'adresse email
* si contenu : if(eregi(chr(10),$contenu) || ...)

remplacer les variables.