Protéger formulaire de contact
                    
        
     
             
                    titacmoii
    
        
    
                    Messages postés
            
                
     
             
            6
        
            
                                    Statut
            Membre
                    
                -
                                     
titacmoii Messages postés 6 Statut Membre -
        titacmoii Messages postés 6 Statut Membre -
        Bonjour tout le monde, je m adresse à vous parce que j 'ai pas trouvé la bonne réponse enfin j ai vu des tutos mais je suis perdus ,voila je veux protéger mon formulaire de contact de hacker et des spammeurs,sans captcha et sans js ,j ai essayé des scripts mais sans vain , j'ai mis quelque truc sur le HTML mais je sais pas si c est correcte ou non,j'ai mis des flèche pour des truc que j 'ai ajouté 
voila tout merci pour votre aide ...
            
            
                
            
                
    
    
    
        HTML
<form method="post" action="traitement.php">
<p>
<B><label for="Civilite">Civilité :</label><br/></B>
<select name="Civilite" id="Civilite">
<b><option value="Choisissez">Choisissez</option></b>
<b><option value="Monsieur">Monsieur</option></b>
<b> <option value="Madame">Madame</option></b>
</select>
</P>
<br>
<P>
<B><label>Votre Nom: *</label><input type="text/css" name="nom" id="Nom"/><br></B>
<b><label>Votre Prénom:</label><input type="text/css" name="prenom" id="prenom" /><br></b>
<b><label>Adresse:</label><input type="text/css" name="adresse" id="adresse" /><br></b>
<b><label>Ville:</label><input type="text/css" name="prenom" id="prenom" /><br></b>
<b><label>Société: *</label><input type="text/css" name="societe" id="societe" /><br></b>
<b><label>Votre N° Tel: *</label><input type="text/css" name="tel" id="tel" /><br></b>
<b><label>Votre E-mail: *</label><input type="text/css" name="email" id="email" /><br></b>
<b><label>Sujet: *</label><input type="text/css" name="sujet" id="sujet" /><br></b></P>
----> <input type="hidden" name="verif" value="<? print dechex(time()); ?>" />
---> <?php
if (time() < hexdec(@$_POST['verif']) + 2)
{
echo "Vous ne pouvez pas valider le formulaire en moins de 2 secondes.";
}
?>
<P> <b><label for="message">
Votre Message: *
</label>
<br />
<textarea name="message" id="message" rows="10" cols="60">
</textarea></b>
<INPUT TYPE="submit" VALUE="Envoyer">
<INPUT TYPE="reset" VALUE="Effacer">
</p></div>
</form>
php
<?php
$errtxt = "";
if(empty($_POST["nom"]))
$errtxt .= "Veuillez renseigner votre nom<br />";
if(empty($_POST["societe"]))
$errtxt .= "Veuillez renseigner votre société<br />";
if(empty($_POST["tel"]))
$errtxt .= "Veuillez renseigner votre tel<br />";
if(empty($_POST["email"]))
if(!$_POST) exit;
$email = $_POST['email'];
//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )){
$error.="Adresse e-mail invalide !<br/>" ;
$errors=1;
}
if($errors==1) echo $error;
if(empty($_POST["sujet"]))
$errtxt .= "Veuillez renseigner votre sujet<br />";
if (isset($_POST['message'])) $_POST['message']=trim(stripslashes($_POST['message']));
if(empty($_POST['message']))
$errtxt .= "Veuillez renseigner votre message<br />";
if($errtxt!="")
echo ("Une/Des erreur(s) s'est/se sont produite(s) ! <br />").$errtxt;
else
{
echo("<center><font color=green><br><br><br><h2>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center>");
$adresse = "contact@monsite.com";
$nom=htmlentities($_POST['nom']);
$email=htmlentities($_POST['email']);
$sujet=htmlentities($_POST['sujet']);
$société=htmlentities($_POST['societe']);
$message=htmlentities($_POST['message']);
$message=str_replace("\'","'",'message');
$message=addslashes($_POST['message']);
$TO = $adresse;
$head = "From: ".$adresse."\n";
$head .= "X-Sender: <".$adresse.">\n";
$head .= "X-Mailer: PHP\n";
$head .= "Return-Path: <".$adresse.">\n";
$head .= "Content-Type: text/plain; charset=utf-8\n";
$head .= "MIME-Version: 1.0\r\n";
$sujet = "Formulaire de contact";
$informations = "
Nom: ".$_POST['nom']." \r\n
Société: ".$_POST['societe']." \r\n
Tel: ".$_POST['tel']." \r\n
Email du Contact: ".$_POST['email']." \r\n
Sujet du Contact: ".$_POST['sujet']."\r\n
message: ".$_POST['message']." \r\n
";
mail($TO, $sujet ,$informations, $head);
}
?><br><br>
j'ai eu message d erreur ""Deprecated: Function eregi () est obsolète dans / home/u714458844/public_html/traitement.php sur la ligne 17 Adresse e-mail invalide!"""
puis j'ai autre problème ; meme si y a des erreur je reçois message sur ma boite email a ,je sais pas comment faire pour ne pas envoyé email si yas des erreurs ,mais une fois valider tout les champs et que y as pas d erreur ensuite message s envoie
voila tout merci pour votre aide ...
        A voir également:         
- Protéger formulaire de contact
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Proteger cellule excel - Guide
- Protéger un dossier par mot de passe - Guide
- Formulaire de reclamation instagram - Guide
1 réponse
                        
                    Salut, niveau HTML ça commence fort:
Ensuite,
Et je comprends que tu veuilles le nom de la ville; mais je doute qu'elle aie un prénom (champ déjà occupé pour le prénom du "client"):
Passons coté "sécuritay" (mal ortographié car c'est pas de la sécurité): utiliser un
Une pratique générique mais assez efficace pour lutter contre le spam est d'utiliser une liste de mots/expressions bannies (CCM le fait d'ailleurs).
Pour le reste des champs, une vérif' comme tu le fais est efficace; mettre une limite de caractères max serait bien aussi.
Pour la verif' de l'email; mon pauvre c'est pas bon:
Sur une autre note, je vois des [A tilde]© dans ton texte, qu'on te brûle au bucher (ok j'abuse :p) pour: 1. avoir mis des accents dans les noms de variable 2. avoir enregistré ton fichier en UTF8 et ouvert avec un encodage ASCII. Passe tout en UTF8 et on en reparle plus.
Ta condition
(On en reparle quand c'est corrigé ;) )
from human import idiocy
del idiocy
    
                <B><label for="Civilite">Soit tu mets toutes les balises en majuscule à la mode des pages des années 90, soit tout en minuscule.
Ensuite,
input type="text/css"ça vient de sortir? Non, pask' en fait ça existe pas. Les
type="text/css"c'est pour les
<link>dans le
<head>; je te renvoie au paragraphe 4.10.7 du standard HTML5 qui liste les types possibles pour un input; en l'occurence tu veux text, tel et email.
Et je comprends que tu veuilles le nom de la ville; mais je doute qu'elle aie un prénom (champ déjà occupé pour le prénom du "client"):
<label>Ville:</label><input type="text/css" name="prenom"
Passons coté "sécuritay" (mal ortographié car c'est pas de la sécurité): utiliser un
<input type="hidden">avec une date n'est pas une sécurité: un coup d'éditeur HTML (fait Ctrl+Shift+I pour voir) ou de requète paramètre spécial dans le cas d'un bot et c'est fichu. La vérif' de fréquence/vitesse d'envoi doit se faire coté serveur uniquement ou serveur+client avec une date cryptée (AES/DES/autre avec mcrypt_encrypt/decrypt).
Une pratique générique mais assez efficace pour lutter contre le spam est d'utiliser une liste de mots/expressions bannies (CCM le fait d'ailleurs).
Pour le reste des champs, une vérif' comme tu le fais est efficace; mettre une limite de caractères max serait bien aussi.
Pour la verif' de l'email; mon pauvre c'est pas bon:
eregi()est obsolète, utilise
preg_match()à la place; de plus ta regex est pas bonne, voilà la vraie regex pour vérifier une addresse email comme définie par la RFC822. Au fait, je plaisante, la plupart des regex fournies sur le net sont bonnes aussi.
Sur une autre note, je vois des [A tilde]© dans ton texte, qu'on te brûle au bucher (ok j'abuse :p) pour: 1. avoir mis des accents dans les noms de variable 2. avoir enregistré ton fichier en UTF8 et ouvert avec un encodage ASCII. Passe tout en UTF8 et on en reparle plus.
Ta condition
if($errtxt!="")est pas top: préfère la variable booléenne/entière
$errorsqui sera plus claire dans tes if; pense aussi à mettre des crochets de partout, c'est mieux pour la lisibilité vu qu'apparament l'indentation tu la gères bizarrement. D'ailleurs vu comme c'est fait, ton mail sera quand même envoyé si
$errors== 1 car tu vérifies que
$errtxt.
(On en reparle quand c'est corrigé ;) )
from human import idiocy
del idiocy
 
    
    
    
    
bon je te signale que je suis novice j apprend d'après mes erreurs :p ; j'ai corrigé quelque ligne ,mais j'ai pas compris ce que tu veux dire par:
'''Une pratique générique mais assez efficace pour lutter contre le spam est d'utiliser une liste de mots/expressions bannies (CCM le fait d'ailleurs).
Pour le reste des champs, une vérif' comme tu le fais est efficace; mettre une limite de caractères max serait bien aussi. ''''
si tu peux m'aider un peu stp sera sympa de ta part , pour la verif d email je met le preg-match () comme tu as dis mais tjr erreur ,[Avertissement: preg_match (): Unknown modificateur '+' in / home/u714458844/public_html/traitement.php on line 17] tu peux me donner syntax exacte stp ,pour la condition j ai mis $errors à la place de $errtxt ,merci pour tout
"une limite de caractères max serait bien": tu vérifies si les champs sont vides, alors vérifies aussi s'ils ne sont pas trop longs, ou bien tronque-les.
Pour l'avertissement de : ajoute des au début et à la fin de ton expression régulière, comme ceci:
preg_match('/^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}/')j'ai mis le syntaxe que tu m as donné
//$errors[] = preg_match('/^[a-z0-9]+[-_.]?[a-z0-9]+[-_.]?[a-z0-9]+@[a-z]+\.[a-z]{2,}$/') ? '' : 'INVALID EMAIL ADDRESS';
if(!preg_match("[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email)){
$errors.="Adresse e-mail invalide !<br/>" ;
}
if($errors==1) echo $error;
mais j'ai reçu un message d 'erreur : [ Avertissement: preg_match (): Unknown modificateur '+' in / home/u714458844/public_html/traitement.php on line 17 ]
merci de corriger si j'ai fais des bêtises lol
j'ai essayé mais sans vain ,j ai mis autre syntaxe le voila ,stp tu peux me dire si c est correcte au niveau de vérification d'email ,et autre chose ,même si je met l adresse correcte me met une erreur "" email invalide "" voila le code php
<?php
$errors = "";
if(empty($_POST["nom"]))
$errors .= "Veuillez renseigner votre nom<br />";
if(empty($_POST["societe"]))
$errors .= "Veuillez renseigner votre société<br />";
if(empty($_POST["tel"]))
$errors .= "Veuillez renseigner votre tel<br />";
if(empty($_POST["email"]))
$email_regex = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+.[a-z0-9-]";
if ( $email == "" OR !preg_match( $email_regex , $email ) )
$error=1;
if($error==1){
$errors.="Adresse e-mail invalide !<br/>" ;
}
if(empty($_POST["sujet"]))
$errors .= "Veuillez renseigner votre sujet<br />";
if (isset($_POST['message'])) $_POST['message']=trim(stripslashes($_POST['message']));
if(empty($_POST['message']))
$errors .= "Veuillez renseigner votre message<br />";
if($errors!="")
echo ("Une/Des erreur(s) s'est/se sont produite(s) ! <br />").$errors;
else
{
echo("<center><font color=green><br><br><br><h2>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center>");
$adresse = "contact@monsite.fr";
$nom=htmlentities($_POST['nom']);
$email=htmlentities($_POST['email']);
$sujet=htmlentities($_POST['sujet']);
$societe=htmlentities($_POST['societe']);
$message=htmlentities($_POST['message']);
$message=str_replace("\'","'",'message');
$message=addslashes($_POST['message']);
$TO = $adresse;
$head = "From: ".$adresse."\n";
$head .= "X-Sender: <".$adresse.">\n";
$head .= "X-Mailer: PHP\n";
$head .= "Return-Path: <".$adresse.">\n";
$head .= "Content-Type: text/plain; charset=utf-8\n";
$head .= "MIME-Version: 1.0\r\n";
$sujet = "Formulaire de contact";
$informations = "
Nom: ".$_POST['nom']." \r\n
Société: ".$_POST['societe']." \r\n
Tel: ".$_POST['tel']." \r\n
Email du Contact: ".$_POST['email']." \r\n
Sujet du Contact: ".$_POST['sujet']."\r\n
message: ".$_POST['message']." \r\n
";
mail($TO, $sujet ,$informations, $head);
}
?><br><br>
merci bp et désoler pour dérangement