Page 1 sur 1

Insérer un code captcha dans mon livre d'or

Posté : 09 janv. 2014, 11:32
par scoubi
Bonjour à tous et je vous souhaite à tous une bonne année 2014.

Etant attaqué sur mon livre d'or ( environ 200 message par heure !!! ) je suis obligé d'installer un code captcha mais je n'arrive pas à adapter un code au sein de ce dernier et j'aurais besoin de vos aides.
Après recherches j'ai porté mon choix sur cet exemple :

http://www.petit-kiwi.com/php-creation- ... -anti-spam
J'ai donc crée les fichiers image png, récupéré les deux polices de caractères, crée le fichier captcha.php...
j'ai bien le captcha qui s'affiche mais je ne peux plus poster de message dans le livre ( que le captcha soit valide ou non !)
mais n'étant pas encore un foudre en programmation php l'implantation de ce code ne poste plus les messages dans le livre d'or, l'action pour poster viens en page guestbook.php
par
<div style="text-align:center;"><INPUT border=0 src="envoyer.jpg" type=image name="sub" value="Envoyer" /></div>

J'ai un livre d'or sans base MySQL avec écriture dans des fichier txt voici la prog du fichier guestbook.php :
<!DOCTYPE html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="description" CONTENT="">
<meta HTTP-EQUIV="IMAGETOOLBAR" content="no" SCROLLING="yes" >
<meta name="keywords" CONTENT="">
<head>
<title>Livre d'or</title>

<style type="text/css">
	body { 
		background: #000000; 
		color: #000000;
		font-family: Verdana ;
	color:white;
font-size:14px;
    }

</style> 
<style type="text/css">
div.grande 
    { 
 
    width : 70%; 
    } 
p{
  line-height:25px;
}

</style>

</head>
<body>
<form method=post action=writeguest.php 
onSubmit='if ( this.nom.value.length < 2 ) { return false ;}' >
  <BR><p align="center"><FONT FACE="gabriola" size="9" color="white">Fils de Sa&ocirc;ne</FONT></BR><FONT FACE="gabriola" size="6" color="white">Livre d'or </FONT></p></FONT>	
  
<table border="0" align="center"> 
<tr><td><img src="test.jpg"></td><td>
 <Div>
<table>
<tr><td><FONT FACE="monotype corsiva" size="4" color="white">Nom :</FONT></td>
    <td><input type=text name=nom size=25 ></td></tr>
<tr><td><FONT FACE="monotype corsiva" size="4" color="white">Mail :</FONT></td>
    <td><input type=text name=mail size=25 ></td></tr>
<tr><td><FONT FACE="monotupe corsiva" size="4" color="white">Message:</FONT></td><td colspan=1>
        <textarea name=message rows=6 cols=47></textarea>
    </td></tr>
</table>
</Div>

</td><td><img src="livre.jpg"></td></td></tr></table>


<div style="text-align:center;"><INPUT border=0 src="envoyer.jpg" type=image name="sub" value="Envoyer" /></div>
</form>
<div style="text-align:center;"><a href="http://fils-de-saone.fr/index.htm"onMouseOver="window.status='';return true"><img src="bfermer.jpg"  BORDER="0" alt=""/></a></div>

<div align="center" ><div class="grande" style="border:3px solid #000000; padding 1px;"><div style="text-align:left;"><FONT FACE="gabriola" size="6" color="white"  >Vos impressions, commentaires:</FONT></div></div>
<div align="center" >
<div class="grande" style="border:3px solid #FFFFFF; padding 3px;"><div style="text-align:left;">
 <?php include("guestbook.txt"); ?></div></div>



</BR>
<div style="text-align:center;"><a href="http://filstest/index.htm"onMouseOver="window.status='';return true"><img src="bfermer.jpg"  BORDER="0" alt=""/></a></div>
<div style="text-align:center"><FONT face="gabriola" size="3"color="#FFFFF"><P>filtest Copyright &#169;  testFrance,  
                     Tous drois reserv&eacute;s - All rights reserved, reproduction interdite</font>
et voici le code de mon writeguest.php
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<head>

<meta name="description" CONTENT="">
<meta HTTP-EQUIV="IMAGETOOLBAR" content="no" SCROLLING="yes" >
<meta name="keywords" CONTENT="">
<head>

  <title></title>

</head>
<body>


<?php

//Ouverture du fichier en écriture

$fp = fopen("/htdocs/livredor/guestbook.txt",a);






//On convertit les caracteres html

echo htmlspecialchars_decode(htmlentities($chaine, ENT_NOQUOTES, 'ISO-8859-1'));

$nom = htmlspecialchars(stripslashes($_POST['nom']));
 
$mail = htmlspecialchars(stripslashes($_POST['mail']));
 
$message = htmlspecialchars(stripslashes($_POST['message']));

$ipvisiteur = $_SERVER["REMOTE_ADDR"];

$file = 'guestbook.txt';
//$mots_a_censurer = array(' con ',' merde ', ' batard ',' pd ',' enfoiré ', ' pute ', ' enculé '); 
//$message = str_replace($mots_a_censurer, ' *** ', $message); 

$d = date ( "d/m/Y à H:i:s" );

function censorWords($find=array(),$text=null){
$replace = ' **** ';
return preg_replace($find,$replace,$text);
}

/*liste des mots a filtrer ou expression aussi longue que tu veux*/
$file = 'guestbook.txt';
$find = array(
'/test anti insulte,\s/i',
);
$newmail = censorWords($find,$mail);
$newnom = censorWords($find,$nom);
$newmessage = censorWords($find,$message);
       



$page = "";



$page .= "&nbsp;<b>$newnom</b> &nbsp; $newmail<br> &nbsp;le:&nbsp; $d<br>&nbsp;$newmessage<br><hr>\n";

   


//On rajoute le message

fwrite($fp,"$page" ,strlen("$page"));



//fermeture du fichier

fclose($fp);
// 3/ GESTBOOK - AVEC IP
//Ouverture du fichier en écriture
$file = 'guestbook-ip.txt';
$fp = fopen("/htdocs/livredor/".$file,a);
$page = "";
$page .= "&nbsp;<b>$newnom</b> &nbsp; $newmail<br> &nbsp;le:&nbsp;$d&nbsp;Ip:$ipvisiteur<br>&nbsp;$newmessage<br><hr>\n";
//On rajoute le message
fwrite($fp,"$page" ,strlen("$page"));
//fermeture du fichier
fclose($fp);
?>

<?php include("guestbook.php"); ?>
</body>
</html>

Merci par avance pour vos aides précieuses
Amicalement scoubi

Re: Incérer un code captcha dans mon livre d'or

Posté : 09 janv. 2014, 16:36
par scoubi
Re bonjour à tous,


J'ai un petit peu avancé en changeant de code, maintenant il faut que je trouve le moyen de poster en incérant l'instruction au sein de ce code

Code : Tout sélectionner

if (chk_crypt($_POST['code'])) echo "Bravo"; else echo "Erreur"; ?>
à la place de echo"bravo" ;
une bonne âme pourrait elle m'aider ?
Merci par avance

Re: Incérer un code captcha dans mon livre d'or

Posté : 10 janv. 2014, 18:00
par scoubi
Bonjour à tous,

J'ai un peu avancé en retravaillant, j'ai rétabli le postage des messages et le captcha s'affiche.
Et la ou je ne comprend plus c'est que quelque soit la valeur du captcha ou même sans rien dedans le message se poste quand même !!!
voici mon code modifié dans le fichier guestbook.php

Code : Tout sélectionner

<?php session_start(); ?> <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <meta name="description" CONTENT=""> <meta HTTP-EQUIV="IMAGETOOLBAR" content="no" SCROLLING="yes" > <meta name="keywords" CONTENT=""> <head> <title>Livre d'or</title> <style type="text/css"> body { background: #000000; color: #000000; font-family: Verdana ; color:white; font-size:14px; } </style> <style type="text/css"> div.grande { width : 70%; } p{ line-height:25px; } </style> </head> <body> <?php if (isset($_POST['submitform'])){ $secure = isset($_POST['secure']) ? strtolower($_POST['secure']) : ''; if ($secure == $_SESSION['securecode']) { echo '<FONT FACE="gabriola" size="9" color="white">Le code de sécurité est ok</FONT>'; unset($_SESSION['securecode']); } else { echo '<FONT FACE="gabriola" size="9" color="white">Le code de sécurité est incorrecte!</FONT>'; } } ?> <form method=post action=writeguest.php onSubmit='if ( this.nom.value.length < 2 ) { return false ;}' > <BR><p align="center"><FONT FACE="gabriola" size="9" color="white">Fils de Sa&ocirc;ne</FONT></BR><FONT FACE="gabriola" size="6" color="white">Livre d'or </FONT></p></FONT> <table border="0" align="center"> <tr><td><img src="test.jpg"></td><td> <Div> <table> <tr><td><FONT FACE="monotype corsiva" size="4" color="white">Nom :</FONT></td> <td><input type=text name=nom size=25 ></td></tr> <tr><td><FONT FACE="monotype corsiva" size="4" color="white">Mail :</FONT></td> <td><input type=text name=mail size=25 ></td></tr> <tr><td><FONT FACE="monotupe corsiva" size="4" color="white">Message:</FONT></td><td colspan=1> <textarea name=message rows=6 cols=47></textarea> </td></tr> </table> </Div> </td><td><img src="livre.jpg"></td></td></tr></table> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" > <div style="text-align:center;">Code de sécurité: <input name="secure" type="text" size="10" /> <img src="securitecode.php" alt="Code de sécurité" /></div></BR> <div style="text-align:center;"><INPUT border=0 src="envoyer.jpg" type=image type=submit name="submitform" value="Envoyer" /></div> </form> <div style="text-align:center;"><a href="http://fils-de-saone.fr/index.htm"onMouseOver="window.status='';return true"><img src="bfermer.jpg" BORDER="0" alt=""/></a></div> <div align="center" ><div class="grande" style="border:3px solid #000000; padding 1px;"><div style="text-align:left;"><FONT FACE="gabriola" size="6" color="white" >Vos impressions, commentaires:</FONT></div></div> <div align="center" > <div class="grande" style="border:3px solid #FFFFFF; padding 3px;"><div style="text-align:left;"> <?php include("guestbook.txt"); ?></div></div> </body> </html>
et le fichier securitecode.php :

Code : Tout sélectionner

<?php // Créer un fichier securitecode.php dans lequel vous placer ce code : session_start(); $largeur = 120; $hauteur = 40; $longueur = 5; $liste = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $code = ''; // $counter = 0; $image = @imagecreate($largeur, $hauteur) or die('Impossible d\'initializer GD') ; for( $i=0; $i<10; $i++ ) { imageline($image, mt_rand(0,$largeur), mt_rand(0,$hauteur), mt_rand(0,$largeur), mt_rand(0,$hauteur), imagecolorallocate($image, mt_rand(200,255),mt_rand(200,255),mt_rand(200,255) )); } for( $i=0, $x=0; $i<$longueur; $i++ ) { $charactere = substr($liste, rand(0, strlen($liste)-1), 1); $x += 10 + mt_rand(0,10); imagechar($image, mt_rand(3,5), $x, mt_rand(5,20), $charactere, imagecolorallocate($image, mt_rand(0,155), mt_rand(0,155), mt_rand(0,155))); $code .= strtolower($charactere); } header('Content-Type: image/jpeg'); imagejpeg($image); imagedestroy($image); $_SESSION['securecode'] = $code; // fin du code ?>]
merci par avance pour vos aides

Re: Incérer un code captcha dans mon livre d'or

Posté : 12 janv. 2014, 11:39
par scoubi
Bonjour à tous,

La méthode pour envoyer le message vient de cet élément :

Code : Tout sélectionner

<form method=post action=writeguest.php onSubmit='if ( this.nom.value.length < 2 ) { return false ;}' >
mais je n'arrive pas à l'intégrer comme résultat une fois le captcha validé,
à savoir ici

Code : Tout sélectionner

<?php if (isset($_POST['submitform'])){ $secure = isset($_POST['secure']) ? strtolower($_POST['secure']) : ''; if ($secure == $_SESSION['securecode']) { echo '<FONT FACE="gabriola" size="9" color="white">Le code de sécurité est ok</FONT>'; unset($_SESSION['securecode']); } else { echo '<FONT FACE="gabriola" size="9" color="white">Le code de sécurité est incorrecte!</FONT>'; } } ?>
à la place de cela :

Code : Tout sélectionner

echo '<FONT FACE="gabriola" size="9" color="white">Le code de sécurité est ok</FONT>'; unset($_SESSION['securecode']);
Personne pour m'aider ou me donner des pistes ????