lemuse Posté 22 Février 2010 Posté 22 Février 2010 Hello! Je désirerais installer un captcha sur un livre d'or, j'ai pas mal retourné le web avant de poser mon choix sur cryptograph 1.4, j'ai réussis à l'installer mais il ne fonctionne pas, il ne vérifie pas le code et laisse de ce fait passer le spam. J'ai rerevérifier l'instal et tout est correct, mais au vu du formulaire du livre d'or, un script de vérification déjà présent semble prendre le dessus. Le formulaire - Livre d'or : <?php $cryptinstall="./crypt/cryptographp.fct.php";include $cryptinstall; ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html lang="fr"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Formulaire Livre d'or</title><meta name="description" content=""><meta name="keywords" content=""><meta lang="fr" content=""><meta http-equiv="imagetoolbar" content="no"><style type="text/css"><!--_AT_import url("global.css");body {background-image: url("signer.jpg");margin: 8px;color: #ffffff;font-weight: bold;}input {font-family: verdana;font-weight: bold;font-size: 8pt;color: #563B17;border: 1px #563B17 solid;}textarea {font-family: verdana;font-weight: bold;font-size: 8pt;color: #563B17;border: 1px #563B17 solid;width: 320px;height: 100px;}form {margin-left: 12px;}h2 {margin-bottom: 40px;}.commentaire {font-size: 8pt;}--></style><script language="JavaScript" type="text/javascript"><!--function verifMail(){var regExp1 = new RegExp ("[\\w+\-\.]@[\\w+\-]");var valeurMail = document.getElementById("mail").value; if(valeurMail!="") { if(valeurMail.search(regExp1)==-1) { alert("Veuillez entrer une adresse mail valide ou ne pas en entrer."); return false; } }}//--></script></head><body><h1 style="margin-bottom: 60px;">Signez le livre d'or</h1><h2>Remplissez le formulaire.</h2><form action="send_lo.php" method="post" onsubmit="javascript: return verifMail();">nom* :<br /><input type="text" name="nom" /><br /><br />mail :<br /><input type="text" name="mail" id="mail" /><br /><br />commentaire* :<br /><textarea name="commentaire"></textarea><br /><br /><form action="verifier.php" method="post"><table> <tr><td><?php dsp_crypt(0,1); ?></td></tr> <tr><td>Recopier le code:<input type="text" name="code"></td></tr> <tr><td><input type="submit" name="submit" value="Envoyer"></td></tr></table></form><p class="commentaire">* Seuls les champs nom et mail doivent obligatoirement être remplis...</p></body></html> .. et celui de verif mail (send_lo.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html lang="fr"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Formulaire Livre d'or</title><meta name="description" content=""><meta name="keywords" content=""><meta lang="fr" content=""><meta http-equiv="imagetoolbar" content="no"><style type="text/css"><!--_AT_import url("global.css");body {background-image: url("signer.jpg");margin: 8px;color: #ffffff;font-weight: bold;}p {text-align: center;}a {color: #ffffff;font-weight: bold;}a:hover {text-decoration: none;color: #ffffff;font-weight: bold;}h2 {margin-bottom: 40px;}--></style></head><body><h1 style="margin-bottom: 60px;">Signez le livre d'or</h1><h2>Envoi des données.</h2><?include("connect.php");include("mq.php");$nom = mysql_escape_string($_POST["nom"]);$mail = mysql_escape_string($_POST["mail"]);$commentaire = mysql_escape_string($_POST["commentaire"]);$date = strftime("%d/%m/%y à %H:%M:%S");if($nom != "" & $commentaire != ""){$envoyer = mysql_query("INSERT INTO mpf_fr_livredor (nom, mail, commentaire, date) VALUES ('$nom', '$mail', '$commentaire', '$date')");if(!$envoyer){echo"<p>Les données n'ont pu être envoyées... Veuillez réessayer plus tard.</p>".mysql_error()."<p><a href=\"javascript: history.back();\">Retourner au formulaire</a></p>"."<p><a href=\"javascript: window.close();\">Fermer cette fenêtre</a></p>";}else{echo"<p>Envoi des données réussi.</p>"."<p><a href=\"javascript: window.close();\">Fermer cette fenêtre</a></p>";}}else{echo"<p>Le formulaire n'a pas été correctement rempli. Veuillez recommencer.</p>"."<p><a href=\"javascript: history.back();\">Retourner au formulaire</a></p>"."<p><a href=\"javascript: window.close();\">Fermer cette fenêtre</a></p>";}?></body></html> Déja merci de vos avis
lemuse Posté 22 Février 2010 Auteur Posté 22 Février 2010 Voici le lien du site, j'ai glisser une erreur dans le formulaire pour éviter le spam, quelqu'un pourrait t'il m'aider à rendre ces deux scripts compatibles ? même s'il faut virer verifmail (j'ai bien tenté..) le captcha est primordial. Ou si une autre méthode vous apparait, parce que là je patauge complétement Le site Merci.
paolodelmare Posté 23 Février 2010 Posté 23 Février 2010 (modifié) Bonjour Je ne connaissais pas cryptographp, mais une micro-recherche du style 'cryptographp crack|exploit' etc donne à penser que ce n'est pas le meilleur choix et que ses vulnérabilités dépassent le cadre du simple spam, comme les visiteurs vendeurs de viagra le laissent supposer... (http://seclists.org/fulldisclosure/2009/Mar/238) Il vaut mieux googler un peu les scripts avant de les choisir. Par ailleurs, ton livre d'or expose les e-mails des visiteurs ayant laissé un message sur le livre d'or, ce qu'il est préférable d'éviter (pour eux). On trouve aisément des tutos de captcha ou des scripts plus robustes, je te suggère d'en changer. Modifié 23 Février 2010 par paolodelmare
lemuse Posté 23 Février 2010 Auteur Posté 23 Février 2010 Bonjour paolo et merci de ton attention, je suis bien d'accord avec toi sur cette histoire d'émail requis, mais je ne suis pas le concepteur et mes connaissances en ce domaine frise le zéro. Par contre, je peux suivre les conseils et m'appliquer, et à ce sujet, que me conseillerais tu comme sécurité à appliquer sur le formulaire, et quel code dois je supprimer pour rendre tout ca opérationnel ?
paolodelmare Posté 24 Février 2010 Posté 24 Février 2010 Bonjour, je ne fais quasiment plus de php (je développe en python/django).Je te suggère de supprimer cryptographp. Les spammers développent leurs scripts anti captcha en fonction des outils plus populaires/vulnérables diponibles. Je te renvoie vers un des nombreux tutos disponibles, notamment sur les captchas textuels, largement suffisants pour des sites à petite audience, ou le livre 'sécurité PHP5' de Seguy/Gamache chez eyrolles. Si tu utilises un captcha image, il faut la "torturer" un peu pour que les caractères ne soient pas identifiés. C'est assez simple à lire avec une librairie OCR, comme les montrent ce post . Bon courage!
lemuse Posté 24 Février 2010 Auteur Posté 24 Février 2010 (modifié) ... Mon problème est que je n'arrive pas à intégrer correctement le captcha dans mon formulaire existant, le captcha fonctionne et l'envoi de données semble réussi, mais seul la date (générée automatiquement) est envoyée au serveur, les autres champs restent vide. Ou est ce que cela cloche ? <?php$cryptinstall="cryptographp.fct.php";include $cryptinstall;include("connect.php");include("mq.php");?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html lang="fr"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Formulaire Livre d'or</title><meta name="description" content=""><meta name="keywords" content=""><meta lang="fr" content=""><meta http-equiv="imagetoolbar" content="no"><style type="text/css"><!--_AT_import url("global.css");body {background-image: url("signer.jpg");margin: 8px;color: #ffffff;font-weight: bold;}p {text-align: center;}a {color: #ffffff;font-weight: bold;}a:hover {text-decoration: none;color: #ffffff;font-weight: bold;}h2 {margin-bottom: 40px;}--></style></head><body><h1 style="margin-bottom: 60px;">Signez le livre d'or</h1><h2>Envoi des données.</h2><?php$nom = mysql_escape_string($_POST["nom"]);$mail = mysql_escape_string($_POST["mail"]);$commentaire = mysql_escape_string($_POST["commentaire"]);$date = strftime("%d/%m/%y à %H:%M:%S");if (chk_crypt($_POST['code'])) {$envoyer = mysql_query("INSERT INTO mpf_fr_livredor (nom, mail, commentaire, date) VALUES ('$nom', '$mail', '$commentaire', '$date')");if(!$envoyer){echo"<p>Les données n'ont pu être envoyées... Veuillez réessayer plus tard.</p>".mysql_error()."<p><a href=\"javascript: history.back();\">Retourner au formulaire</a></p>"."<p><a href=\"javascript: window.close();\">Fermer cette fenêtre</a></p>";}else{echo"<p>Envoi des données réussi.</p>"."<p><a href=\"javascript: window.close();\">Fermer cette fenêtre</a></p>";}}else{echo"<p>Le formulaire n'a pas été correctement rempli. Veuillez recommencer.</p>"."<p><a href=\"javascript: history.back();\">Retourner au formulaire</a></p>"."<p><a href=\"javascript: window.close();\">Fermer cette fenêtre</a></p>";}?></body></html> J'ai du supprimer cette ligne pour un "semblant" de fonctionnement, j'aimerais intégrer cette fonction ... if($nom != "" & $commentaire != "") En espérant votre compréhension face au total néophyte que je suis Modifié 24 Février 2010 par lemuse
Patrick Posté 26 Février 2010 Posté 26 Février 2010 Salut, Peut-être devrais-tu suivre les conseils de paolodelmare et opter pour un captcha plus sécurisé et moins complexe à mettre en place ? Tu devrais largement trouver ton bonheur ici. Bon courage. ++ Patrick
lemuse Posté 26 Février 2010 Auteur Posté 26 Février 2010 Salut Patrick, je reconnais, ce n'est pas très respectueux vis à vis de paolodelmare et je m'en excuse, un peu têtu sur le coup Mais, quel que soit le système de sécurité à installer (et il y en a pléthore) je me retrouve avec le même problème d'intégration à mon formulaire existant, le code est examiné et je l'on se retrouve sur une page indiquant : ok c'est bon ou c'est pas bon ! La suite de la vérification des champs ne se fait pas et aucun envoi sur le serveur. C'est la connaissance des commandes, fonctions etc. qui me font défaut, tout ces langages sont vraiment intéressant, mais pour le coup j'y ai déjà passé près d'une semaine sans résultat et le boulot s'empile ... Merci pour tes mots d'encouragement. +
captain_torche Posté 26 Février 2010 Posté 26 Février 2010 Ces soucis ne sont aucunement liés au système de captcha (qui ne fait rien d'autre que te donner l'accès à la page de traitement). Le fait que tu aies le bon message indique que le captcha fonctionne parfaitement. Si toutes les données ne sont pas enregistrées en base, c'est un souci dans ton développement. Après relecture du code, c'est assez simple à comprendre : tu n'as carrément pas de formulaire. Fatalement, rien ne peut s'inscrire dans ta base de données, exceptée la date (qui est générée automatiquement).
lemuse Posté 26 Février 2010 Auteur Posté 26 Février 2010 Salut captain_torche, voila mon formulaire : <?php $cryptinstall="./crypt/cryptographp.fct.php";include $cryptinstall; ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html lang="fr"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Formulaire Livre d'or</title><meta name="description" content=""><meta name="keywords" content=""><meta lang="fr" content=""><meta http-equiv="imagetoolbar" content="no"><style type="text/css"><!--_AT_import url("global.css");body {background-image: url("signer.jpg");margin: 8px;color: #ffffff;font-weight: bold;}input {font-family: verdana;font-weight: bold;font-size: 8pt;color: #563B17;border: 1px #563B17 solid;}textarea {font-family: verdana;font-weight: bold;font-size: 8pt;color: #563B17;border: 1px #563B17 solid;width: 320px;height: 100px;}form {margin-left: 12px;}h2 {margin-bottom: 40px;}.commentaire {font-size: 8pt;}--></style><script language="JavaScript" type="text/javascript"><!--function verifMail(){var regExp1 = new RegExp ("[\\w+\-\.]@[\\w+\-]");var valeurMail = document.getElementById("mail").value; if(valeurMail!="") { if(valeurMail.search(regExp1)==-1) { alert("Veuillez entrer une adresse mail valide ou ne pas en entrer."); return false; } }}//--></script></head><body><h1 style="margin-bottom: 60px;">Signez le livre d'or</h1><h2>Remplissez le formulaire.</h2>nom* :<br /><input type="text" name="nom" /><br /><br />mail :<br /><input type="text" name="mail" id="mail" /><br /><br />commentaire* :<br /><textarea name="commentaire"></textarea><br /><br /><form action="send_lo.php" method="post" onsubmit="javascript: return verifMail();"><table> <tr><td><?php dsp_crypt(0,1); ?></td></tr> <tr><td>Recopier le code:<input type="text" name="code"></td></tr> <tr><td><input type="submit" name="submit" value="Envoyer"></td></tr></table><p class="commentaire">* Seuls les champs nom et commentaire doivent obligatoirement être remplis...</p></form></body></html> .
captain_torche Posté 26 Février 2010 Posté 26 Février 2010 Au temps pour moi, j'avais pas vu cet extrait là Le souci est presque le même : tu n'as pas de champ nom, mail ou commentaire.
lemuse Posté 26 Février 2010 Auteur Posté 26 Février 2010 Il me semble que si .. nom* :<br /><input type="text" name="nom" /><br /><br />mail :<br /><input type="text" name="mail" id="mail" /><br /><br />commentaire* :<br /><textarea name="commentaire"></textarea><br /><br /> .
captain_torche Posté 26 Février 2010 Posté 26 Février 2010 Je suis vraiment miro aujourd'hui ! Donc, c'est tout simplement parce que ces balises ne sont pas entre les balises d'ouverture et de fermeture du formulaire.
lemuse Posté 26 Février 2010 Auteur Posté 26 Février 2010 (modifié) Je pense bien que oui, d'ailleurs la page du formulaire s'affiche correctement avec tout les champs, j'ai d'ailleurs changer l'extension de ce formulaire en .php, il était en .htm, mais aucun changement. Page d'insertion dans le livre d'or . Modifié 26 Février 2010 par lemuse
captain_torche Posté 26 Février 2010 Posté 26 Février 2010 Non, sur ta page les champs sont bien en-dehors du champ "form"
lemuse Posté 26 Février 2010 Auteur Posté 26 Février 2010 Génial ! Si tu savais la tension qui vient de s'évacuer d'un coup ! Merci à toi, merci à tous, je vais pouvoir m'attaquer à un système tel que recommandé par paolo, en attendant le livre refonctionne, super ! +
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant