Quelques question sur mon script contact.
13 messages
• Page 1 sur 1
-

lekouti - WRInaute discret

- Messages: 238
- Inscription: 18 Déc 2003
Quelques question sur mon script contact.
Bonjour à tous,
J'ai installé sur mon site le script tout fait d'un Formulaire de contact nommé I-Contact.
Rapide d'installation et nécessite quand même quelques retouches [cligne].
Voici le code dans son ensemble (tout est sur la même pas):
Je commence, en Haut du code il y a la fonction pour verifier que tout les champs soit bien remplis à l'envoi du mail.
Si erreur il affiche la phrases du code en haut de la page, en rouge et police basique.
Est il possible de mettre en page ce message d'erreur ? voir meme la remplacer par une image et pourquoi pas la mettre a la suite du champs non validé ?
Autre point délicat [smile]
J'aimerai sur cette partie renvoyer le visiteur vers une page personnalisé et non un page toute faite.
Mais je ne vois pas comment rentrer une url dans ce code.
Sinon y a t'il un avantage d'avoir 2fichier différant pour un formulaire ? Celui- ci tiens sur la même page mais bcp on d'un coté la mise en place dans le fichier html et de l'autre un fichier propre pour les donner du formulaire. Plus de sécurité ?
Et pour finir, justement sur la sécurité, ce formulaire n'est pour le moment pas du tout sécurisé.
Je connais le système Captcha mais franchement pas esthétique.
Je crois savoir qu'il existe quelques technique pour limiter les spam sans forcement que ça soit visible, contrôle du header temps mini pour remplir le formulaire ...
Avez vous des infos ou des conseils ??
Merci a tous [biggrin]
J'ai installé sur mon site le script tout fait d'un Formulaire de contact nommé I-Contact.
Rapide d'installation et nécessite quand même quelques retouches [cligne].
Voici le code dans son ensemble (tout est sur la même pas):
- Code: Tout sélectionner
<?php
if (isset($_POST["envoyer"])){ // Si le formulaire a été soumis
$etat = "erreur"; // On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur
// On récupère les champs du formulaire, et on arrange leur mise en forme
if (isset($_POST["son_nom"])) $_POST["son_nom"]=trim(stripslashes($_POST["son_nom"])); // trim() enlève les espaces en début et fin de chaine
if (isset($_POST["son_email"])) $_POST["son_email"]=trim(stripslashes($_POST["son_email"])); // stripslashes() retire les backslashes ==> \' devient '
if (isset($_POST["son_url"])) $_POST["son_url"]=trim(stripslashes($_POST["son_url"]));
if (isset($_POST["son_objet"])) $_POST["son_objet"]=trim(stripslashes($_POST["son_objet"]));
if (isset($_POST["son_message"])) $_POST["son_message"]=trim(stripslashes($_POST["son_message"]));
// Après la mise en forme, on vérifie la validité des champs
if (empty($_POST["son_nom"])) { // L'utilisateur n'a pas rempli le champ pseudo
$erreur="Vous n'avez pas entré votre nom..."; // On met dans erreur le message qui sera affiché
}
elseif (empty($_POST["son_email"])) { // L'utilisateur n'a pas rempli le champ email
$erreur="Nous avons besoin de votre e-mail pour vous répondre...";
}
elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["son_email"])){ // On vérifie si l'email est bien de la forme messagerie@domaine.tld (cf cours d'expressions régulières)
$erreur="Votre adresse e-mail n'est pas valide...";
}
elseif (empty($_POST["son_objet"])) { // L'utilisateur n'a pas rempli le champ objet
$erreur="Vous devez entrer l'objet de votre message...";
}
elseif (empty($_POST["son_message"])) { // L'utilsateur n'a écrit aucun message
$erreur="Merci de saisir un message...";
}
else { // Si tous les champs sont valides, on change l'état à ok
$etat="ok";
}
}
else { // Sinon le formulaire n'a pas été soumis
$etat="attente"; // On passe donc dans l'état attente
}
if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant à l'erreur
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>I Contact</title>
<style type="text/css">
body
{
margin-left: 285px;
width: 450px;
font-family: "Trebuchet MS", Arial, "Arial Black", "Times New Roman", Times, serif;
font-size: 0.8em;
margin-top: 20px;
margin-bottom: 20px;
}
label
{
width: 270px;
font-family: "Trebuchet MS", Arial, "Arial Black", "Times New Roman", Times, serif;
font-size: 1em;
color: #2C485C;
background-color: white;
}
textarea, input
{
font-family: Vardana, "Trebuchet MS", Arial, "Arial Black", "Times New Roman", Times, serif;
font-size: 1em;
color: black;
background-color: #EFEFEF;
}
img
{
Border: none;
}
h3
{
font-family: "Trebuchet MS", "Arial Black", "Times New Roman", Times, serif;
text-align: center;
color: #fff;
background-color: #5183A8;
width: 390px;
}
.attention
{
font-size: 1em;
color: red;
background-color: #fff;
}
</style>
</head>
<body>
<h3>Testez le formulaire il est désactivé !</h3>
<!-- Formulaire HTML qu'on affiche dans l'état attente ou erreur -->
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <!-- Les données du formulaire seront récupérée avec la méthode POST, et action correspond à la page contenant le formulaire -->
<p style="text-align:left">
<label for="son_nom">Nom <span class="attention">*</span></label><br /> <!-- Intitulé du champ pseudo -->
<input type="text" size="40" name="son_nom" id="son_nom" value="<?php
if (!empty($_POST["son_nom"])) {
// le pseudo de l'expéditeur a été saisi --> le réafficher
echo htmlspecialchars($_POST["son_nom"],ENT_QUOTES); // htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &
}
?>" />
<br />
<label for="son_email">E-mail <span class="attention">*</span></label><br /> <!-- Intitulé du champ e-mail -->
<input type="text" size="40" name="son_email" id="son_email" value="<?php
if (!empty($_POST["son_email"])) {
// l'e-mail de l'expéditeur a été saisi --> le réafficher
echo htmlspecialchars($_POST["son_email"],ENT_QUOTES);
}
?>" />
<br />
<label for="son_url">URL de votre site</label><br /> <!-- Intitulé du champ url (facultatif) -->
<input type="text" size="40" name="son_url" id="son_url" value="<?php
if (!empty($_POST["son_url"])) {
// l'url a été saisi --> la réafficher
echo htmlspecialchars($_POST["son_url"],ENT_QUOTES);
}
?>" />
<br />
<label for="son_objet">Objet <span class="attention">*</span></label><br /> <!-- Intitulé du champ objet -->
<input type="text" size="40" name="son_objet" id="son_objet" value="<?php
if (!empty($_POST["son_objet"])) {
// l'objet du message a été saisi --> le réafficher
echo htmlspecialchars($_POST["son_objet"],ENT_QUOTES);
}
?>" />
<br />
<label for="son_message">Message <span class="attention">*</span></label><br /> <!-- Intitulé du champ message -->
<textarea name="son_message" id="son_message" cols="60" rows="10"><?php
if (isset($_POST["son_message"])) {
// le message a été saisi --> le réafficher
echo htmlspecialchars($_POST["son_message"],ENT_QUOTES);
}
?>
</textarea>
<br /><br />
<input type="submit" name="envoyer" value="Envoyer" /> <input type="reset" name="reset" value="Effacer" />
</p>
</form>
<!-- FIN du formulaire HTML -->
<?php
}
else { // Sinon l'état est ok donc on envoie le mail
$son_nom = $_POST["son_nom"]; // On stocke les variables récupérées du formulaire
$son_email = $_POST["son_email"];
$son_url = $_POST["son_url"];
$son_objet = $_POST["son_objet"];
$son_message = $_POST["son_message"];
$mon_email = "votreadresse@email.com"; // Mise en forme du message que vous recevrez (Votre adresse email)
$mon_nom = "Patrick HAMY"; // (Votre pseudo ou votre nom)
$mon_url = "http://www.patrickhamy.net"; // (Votre site)
$msg_pour_moi = "- Son nom : $son_nom \n
- Son E-mail : $son_email \n
- Son site : $son_url \n
- Objet du message : $son_objet \n
- Message : \n $son_message \n\n";
// Mise en forme de l'accusé réception qu'il recevra
$accuse_pour_lui = "Bonjour $son_nom,\n
Votre message nous a bien été envoyé et nous tâcherons de vous répondre le plus rapidement possible.\n\n
- Votre E-mail : $son_email \n
- Votre site : $son_url \n
- L'objet de votre message : $son_objet \n
- Votre message : \n $son_message \n\n
Merci et à bientôt sur http://www.patrickhamy.net !"; // (Votre site)
// Envoie du mail
$entete = "From: " . $mon_nom . " <" . $mon_email . ">\n"; // On prépare l'entête du message
$entete .= "MIME-Version: 1.0";
if (@mail($mon_email,$son_objet,$msg_pour_moi,$entete) && @mail($son_email,$son_objet,$accuse_pour_lui,$entete)){ // Si le mail a été envoyé
echo "<p style=\"text-align:center\">Votre message a été envoyé, vous recevrez une confirmation par mail.<br /><br />\n"; // On affiche un message de confirmation
echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n"; // Avec un lien de retour vers l'accueil du site
}
else { // Sinon il y a eu une erreur lors de l'envoi
echo "<p style=\"text-align:center; color:green\">Un problème s'est produit lors de l'envoi du message.\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a></p>\n"; // On propose un lien de retour vers le formulaire
}
}
?>
</body>
</html>
Je commence, en Haut du code il y a la fonction pour verifier que tout les champs soit bien remplis à l'envoi du mail.
Si erreur il affiche la phrases du code en haut de la page, en rouge et police basique.
Est il possible de mettre en page ce message d'erreur ? voir meme la remplacer par une image et pourquoi pas la mettre a la suite du champs non validé ?
Autre point délicat [smile]
- Code: Tout sélectionner
// Envoie du mail
$entete = "From: " . $mon_nom . " <" . $mon_email . ">\n"; // On prépare l'entête du message
$entete .= "MIME-Version: 1.0";
if (@mail($mon_email,$son_objet,$msg_pour_moi,$entete) && @mail($son_email,$son_objet,$accuse_pour_lui,$entete)){ // Si le mail a été envoyé
echo "<p style=\"text-align:center\">Votre message a été envoyé, vous recevrez une confirmation par mail.<br /><br />\n"; // On affiche un message de confirmation
echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n"; // Avec un lien de retour vers l'accueil du site
}
J'aimerai sur cette partie renvoyer le visiteur vers une page personnalisé et non un page toute faite.
Mais je ne vois pas comment rentrer une url dans ce code.
Sinon y a t'il un avantage d'avoir 2fichier différant pour un formulaire ? Celui- ci tiens sur la même page mais bcp on d'un coté la mise en place dans le fichier html et de l'autre un fichier propre pour les donner du formulaire. Plus de sécurité ?
Et pour finir, justement sur la sécurité, ce formulaire n'est pour le moment pas du tout sécurisé.
Je connais le système Captcha mais franchement pas esthétique.
Je crois savoir qu'il existe quelques technique pour limiter les spam sans forcement que ça soit visible, contrôle du header temps mini pour remplir le formulaire ...
Avez vous des infos ou des conseils ??
Merci a tous [biggrin]
-

Leonick - WRInaute accro

- Messages: 19598
- Inscription: 8 Aoû 2004
Re: Quelques question sur mon script contact.
pour sécuriser, ce que tu peux faire c'est de donner des noms de champs qui dépendront de la session en cours et donc impossible de tenter de spammer le formulaire.
Ensuite, pour empêcher le flood, mettre un délai mini entre 2 validations du formulaire
Ensuite, pour empêcher le flood, mettre un délai mini entre 2 validations du formulaire
-

KOogar - WRInaute accro

- Messages: 3974
- Inscription: 16 Nov 2004
Re: Quelques question sur mon script contact.
pour modifier le message d'erreur, regarde cette ligne
c'est ici que tu fais tes modifications, vu que c'est du HTML on va pas s'attarder
pour la redirection en fin d'operation
regarde ces 2 lignes
et bien remplace les par une redirection
- Code: Tout sélectionner
echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant à l'erreur
c'est ici que tu fais tes modifications, vu que c'est du HTML on va pas s'attarder
pour la redirection en fin d'operation
regarde ces 2 lignes
- Code: Tout sélectionner
echo "<p style=\"text-align:center\">Votre message a été envoyé, vous recevrez une confirmation par mail.<br /><br />\n"; // On affiche un message de confirmation
echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n"; // Avec un lien de retour vers l'accueil du site
et bien remplace les par une redirection
- Code: Tout sélectionner
header('location: ta_page_de_reception.php');
-

Leonick - WRInaute accro

- Messages: 19598
- Inscription: 8 Aoû 2004
Re: Quelques question sur mon script contact.
j'introduit une temporisation, c'est à dire qu'après avoir validé un envoi, on ne peut refaire un envoi avant plusieurs minutes. Et puis un formulaire de contact, au delà de 2 envois, c'est plus que louche (pour le 2° on a pu s'apercevoir qu'on avait oublié une info après avoir validé le 1°) et donc soit on blackliste temporairement l'ip, soit on ne tient pas compte de l'envoi.KOogar a écrit:ah oui ? pourtant ca protege que dale ce systeme. faut juste ouvrir une fenetre apres c'est l'autoroute
Et après, il y a d'autres possibilités de bloquages, mais qu'on ne peut dévoiler, sinon les spammeurs s'en serviront
-

KOogar - WRInaute accro

- Messages: 3974
- Inscription: 16 Nov 2004
Re: Quelques question sur mon script contact.
le probleme c'est qu'avec un controle sur le rooter (pour changer d'IP) + une console Java le spameur (hacker) va jouer avec ton systeme si il cherche a t'attaquer. Je suis d'accord de l'installer comme un complément ou sur 1 site qui ne sera jamais franchement attaquer, juste un peu spamer. Pour un néophyte, installer une captcha reste la meilleur solution anti spam. Combien font 2+5 ?? simple et facile a installer (2 minutes) et les codes sont portables. A l'inverse modifier tout les noms d'un formluaire, ajouter les verifs, les erreurs, les redirections.. rien de portable.; a monter soi meme 
-

Leonick - WRInaute accro

- Messages: 19598
- Inscription: 8 Aoû 2004
Re: Quelques question sur mon script contact.
les captcha sont assez facilement contrables d'après ce que j'ai vu sur différents sites.
Ensuite, un captcha ne doit surtout pas faire penser que l'on est à l'abri, il faut obligatoirement lui adjoindre une protection sur le serveur.
Ensuite, pour les formulaires la première des protection consiste à empêcher d'accéder à un formulaire comme page d'arrivée, avec variable de session par cookie.
Les formulaires ne doivent pas être indexés (robots.txt)
Si les cookies ne passent pas, il est fortement probable que ce soit un robot (malveillant ou non) et dans ce cas, ils n'ont pas à accéder au formulaire. Sinon, il faut que l'internaute autorise les cookies.
Ensuite, un captcha ne doit surtout pas faire penser que l'on est à l'abri, il faut obligatoirement lui adjoindre une protection sur le serveur.
Ensuite, pour les formulaires la première des protection consiste à empêcher d'accéder à un formulaire comme page d'arrivée, avec variable de session par cookie.
Les formulaires ne doivent pas être indexés (robots.txt)
Si les cookies ne passent pas, il est fortement probable que ce soit un robot (malveillant ou non) et dans ce cas, ils n'ont pas à accéder au formulaire. Sinon, il faut que l'internaute autorise les cookies.
-

zeb - WRInaute accro

- Messages: 4569
- Inscription: 5 Déc 2004
Re: Quelques question sur mon script contact.
KOogar a écrit:ah oui ? pourtant ca protege que dale ce systeme. faut juste ouvrir une fenetre apres c'est l'autoroute
Tu sais je ne voie pas trop ce qui peut arrêter un attaquant dans ce cas là.
Partant du principe qu'une personne déterminée passe partout (normal c'est un humain) alors on peut toujours passer par dessus une protection.
Là ou le système est intéressant (je le répète) c'est qu'il fait reposer la sécurité du formulaire sur un système qui varie donc qui introduit une manipulation supplémentaire au bot de spam (çà met les plus basiques hors course pour un moment)
Bon c'est sur si toi KOogar, ou moi, ou n'importe qui se pose sur le page pour l'étudier ça protègera rien mais les contrôles ne sont pas là pour ça, c'est les Kiddies qui foutent la m--de et eux pour la plupart sont des cancres.
-

zeb - WRInaute accro

- Messages: 4569
- Inscription: 5 Déc 2004
Re: Quelques question sur mon script contact.
Leonick a écrit:les captcha sont assez facilement contrables d'après ce que j'ai vu sur différents sites..
Les questions stupides marchent encore assez bien, j'en ai même qui m'écrivent pour dire que la questions est trop facile
- Lomax7
- WRInaute impliqué

- Messages: 796
- Inscription: 29 Mar 2007
Re: Quelques question sur mon script contact.
Il existe un système simple à mettre en place contre lequel les robots ne peuvent rien,
enfin pour le moment, ils sont pas encore programmés pour détecter la ruse.
Une fois que le bot a été détecté on break sur le script qui affiche toujours le formulaire.
Mais je dis rien comme l'a dit Leonick, il ne faut pas en parler.
enfin pour le moment, ils sont pas encore programmés pour détecter la ruse.
Une fois que le bot a été détecté on break sur le script qui affiche toujours le formulaire.
Mais je dis rien comme l'a dit Leonick, il ne faut pas en parler.
-

Leonick - WRInaute accro

- Messages: 19598
- Inscription: 8 Aoû 2004
Re: Quelques question sur mon script contact.
[quote="KOogar"installer une captcha reste la meilleur solution anti spam. Combien font 2+5 ?? simple et facile a installer (2 minutes) et les codes sont portables.[/quote]voir un élément de réponse sur la validité de tels captcha http://www.seoblackout.com/2007/12/30/failles-captchas-questions-calculs/
13 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- script formulaire de contact
- Script PHPMailer pour formulaire de contact
- Cherche Script : MSN Contact list Grabber
- [AJAX] Script d'un formulaire de contact de base
- Besoin de quelques retours sur script de cache d'image
- Encore quelques souçis avec mon script PHP, suite->.
- www.monsite.fr/page=contact en www.monsite.fr/contact.html (possible sur l'index?)
- Ajouter un Gadget Google sur son site - 04-10-2006
- Les albums web Picasa passent à 1 Go de stockage - 08-03-2007
- Google Chrome dépasse Safari aux USA - 29-06-2010
- Photos satellite des incendies en Grèce dans Google Earth - 30-08-2007
- Picasa Web Albums en français - 08-12-2006
- Google Desktop pour Mac OS X - 05-04-2007
- Résultats des élections présidentielles du 1er tour 2007 - 22-04-2007
- Résultats des élections législatives du 1er tour 2007 - 09-06-2007
- Combinaison de mots-clés
Cet outil vous permet de créer à partir de quelques mots-clés une liste d'expressions constituées des mots pris dans tous les ordres possibles. Il sert aux analyses de positionnement et achats de mots-clés. - Echanger des liens
Cet outil vous liste quelques sites qui font des liens vers des sites similaires au vôtre, pour vous aider à trouver des partenaires pour des échanges de liens.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
