Bonjour, j'ai un vieux site attaqué par du spam.
N'étant pas développeur de base, je voudrais mettre un captcha pour éviter les spams.
genre 4+4 = 8
Le formulaire se présente comme cela (extrait)
merci de votre aide

<div class="clearer"></div>
</div><div id="texteLong1-1" class="ideo_gdc_texteLong1">
<div class="blocTexte1">

<? if($ok_mail=="true"){ ?>
<table width='100%' border='0' cellspacing='1' cellpadding='1'>
<tr><td><span class='txtform'>Le message ci-dessous nous a bien été transmis, et nous vous en remercions.</span></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td><tt><?echo nl2br(stripslashes($corps));?></tt></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td><span class='txtform'>Nous allons y donner suite dans les meilleurs délais.<br>A bientôt.</span></td></tr>
</table>
<? }else{ ?>
<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>
<table width='100%' border='0' cellspacing='1' cellpadding='1'>
<? if($erreur){ ?><tr><td colspan='2' bgcolor='red'><span class='txterror'><font color='white'><b>&nbsp;ERREUR, votre message n'a pas été transmis</b></font></span></td></tr><tr><td colspan='2'><ul><?echo$erreur?></ul></td></tr><?}?>
<tr><td colspan='2'><span class='txterror'>Les champs marqué d'un * sont obligatoires</span></td></tr>

...........................
..........................
<tr><td align='right' width='30%'><input type="checkbox" name="lenomquetuveux" value="unevaleur" /> En cochant cette case, j'accepte la politique de confidentialite de ce site.

<tr><td align='right' width='30%'></td><td><input type='submit' name='submit' value='Envoyer' border='0'></td></tr>
</table>
</form>
<? } ?>

</div>

<div class="clearer"></div>
</div>
</div>



<?php include("footer.php"); ?>
je veux juste copier un bout de code dans le formulaire contact.php
ca m'avance pas plus en fait
Bonjour,
Pourquoi ne pas utiliser un captcha basique ?
dans ta saisie tu ajoute une image aléatoire générée par ton captcha.php
ça se fait ainsi:
1) dans ta saisie tu mets

<br />Code de confirmation:<br />
<input name='VerifiCaptcha'  type='text' maxlength=5 size='20'>
<IMG src='captcha.php'>

2) dans ton php qui reçoit la réponse de la saisie, il te suffit de contrôler
le POP de "VerifiCaptcha" avec la session "captcha"
<?PHP
$VerifiCaptcha = (isset($_POST['VerifiCaptcha'])) ? secur($_POST['VerifiCaptcha']) : "x";
$captcha = (isset($_SESSION['captcha'])) ? $_SESSION['captcha'] : 'xxx';
?>

Et de le comparer a la valeur de session du captcha !
lit bien ce fameux captcha.php pour voir dans quelle valeur de session
il met ce q'il a affiché.

3) Voici le captcha.php

<?php
session_start();
$_SESSION['captcha']="";
header ("Content-type: image/png");
$image = imagecreate(100, 100);

$blanc = imagecolorallocate($image, 255, 255, 255);
$noir = imagecolorallocate($image, 0, 0, 0);
$gris = imagecolorallocate($image, 200,200,200);
$jaune = imagecolorallocate($image, 255, 255, 0);
$rouge = imagecolorallocate($image, 200, 39, 45);
$vert = imagecolorallocate($image, 45, 255, 39);
$cyan = imagecolorallocate($image, 0, 255, 255);
$magenta = imagecolorallocate($image, 200, 0, 200);
$orange = imagecolorallocate($image, 255, 160, 0);
$bleu = imagecolorallocate($image, 60, 75, 200);
$bleuclair = imagecolorallocate($image, 156, 227, 254);
$vertf = imagecolorallocate($image, 20, 140, 17);


$couleurs = Array($vert, $noir, $jaune, $blanc, $rouge, $cyan, $magenta, $orange, $bleu, $bleuclair, $gris, $vertf);
$Tcouleurs = count($couleurs);
$Lcouleurs = Array($noir, $rouge, $magenta, $bleu, $vertf);
$TLcouleurs = count($Lcouleurs);
$polices = 'lesw/chopin.ttf';
$carac = '0123456789abcdefghijklmnopqrstuvwxyz';
$Tcarac = strlen($carac);
$couleur_aleat = $Lcouleurs[mt_rand(0,$TLcouleurs-1)];
$ecart = 200/10+4; 
$i = 0;
while($i <= 2)
{
  $lettre = $carac[mt_rand(0, $Tcarac-1)]; 
  $_SESSION['captcha'] .= $lettre; 
  $taille = mt_rand(25,35);
  $angle = mt_rand(-15,15);
  $y = mt_rand(35, 45); 
  imagettftext($image, $taille, $angle, $ecart*$i+15, $y, $couleur_aleat, $polices, $lettre);
  $i++;
}
imagepng($image);
?>
Bonjour,

Merci pour vos infos.
Je dois donc créer un fichier captcha.php?
Et un autre fichier pour la réponse?
j'ai un problème d'affichage :
http://www.menuiseriefarcy-14.fr/contact.php
j'ai crée le fichier captcha.php
J'ai copié ton code dans mon fichier contact.php
<
<tr><td align='right' width='30%'><span class='txtform'>Message* :</span></td><td><textarea style='width:360 <?if($errf_9==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_9' rows='6' cols='40'><?echo$f_9?></textarea></td></tr>
<tr><td align='right' width='30%'><input type="checkbox" name="lenomquetuveux" value="unevaleur" /> En cochant cette case, j'accepte la politique de confidentialite de ce site.

<br />Code de confirmation:<br />
<input name='VerifiCaptcha'  type='text' maxlength=5 size='20'>
<IMG src='captcha.php'>

<tr><td align='right' width='30%'></td><td><input type='submit' name='submit' value='Envoyer' border='0'></td></tr>
</table>
</form>

<? } ?>

	</div>
	
	<div class="clearer"></div>
</div>
			</div>

<?PHP

$VerifiCaptcha = (isset($_POST['VerifiCaptcha'])) ? secur($_POST['VerifiCaptcha']) : "x";
$captcha = (isset($_SESSION['captcha'])) ? $_SESSION['captcha'] : 'xxx';
?>					
			
<?php include("footer.php"); ?>

Modifié par Dutel (24 Sep 2019 - 14:15)
Whaoo ... le nul, j'ais pris mon ancienne version qui ne marche plus
alors voila je te mets tout en deux fichiers, tu replacera comme il faut mais testes déjà ça uniquement ! et mille excuses Smiley confused
fait un copié collé dans captcha.php ET ATTENTION aucun espace en tête du php

<?php
session_start();
header('Content-Type: image/png');
$largeur=80;
$hauteur=25;
$lignes=10;
$caracteres="ABCDEF123456789";
$image = imagecreatetruecolor($largeur, $hauteur);
imagefilledrectangle($image, 0, 0, $largeur, $hauteur, imagecolorallocate($image, 255, 255, 255));
function hexargb($hex) {
    return array("r"=>hexdec(substr($hex,0,2)),"g"=>hexdec(substr($hex,2,2)),"b"=>hexdec(substr($hex,4,2)));
}
for($i=0;$i<=$lignes;$i++){
    $rgb=hexargb(substr(str_shuffle("ABCDEF0123456789"),0,6));
    imageline($image,rand(1,$largeur-25),rand(1,$hauteur),rand(1,$largeur+25),rand(1,$hauteur),imagecolorallocate($image, $rgb['r'], $rgb['g'], $rgb['b']));
}
$code1=substr(str_shuffle($caracteres),0,4);
$_SESSION['captcha']=$code1;
$code="";
for($i=0;$i<=strlen($code1);$i++){
    $code .=substr($code1,$i,1)." ";
}
imagestring($image, 5, 10, 5, $code, imagecolorallocate($image, 0, 0, 0));
imagepng($image);
imagedestroy($image);
?>


Pour tester le PHP de contrôle du retour et le FORM dans captchatest.php


<?php
session_start();
if(isset($_POST['captcha'])){
    if($_POST['captcha']==$_SESSION['captcha']){
        echo "Code correct";
    } else {
        echo "Code incorrect";
    }
}
?>
<html><body><br>
<form action="captchatest.php" method="post">
    <input type="text" name="captcha"/>
    <input type="submit"/>
    <img src="captcha.php" onclick="this.src='captcha.php?' + Math.random();" alt="captcha" style="cursor:pointer;">
</form>
</body></html>
Bien sur ton envoie est derrière mon contrôle alors tu le changes ainsi...

<?php
session_start();
$bloque=99;
if(isset($_POST['captcha'])){
    if($_POST['captcha']==$_SESSION['captcha']){
        echo "Code correct";
    } else {
        echo "Code incorrect";
       $bloque=0;
    }
}
if ($bloque==99) 
{
/*================tu envoie le mail */
}
?>
Bonjour,

Jean-Pierre,
Merci pour le retour.
J'ai effacé le fichier captchatest.php et remis le nouveau code mais je peux toujours envoyé des mails sans blocage.
Dutel a écrit :
Bonjour,

Jean-Pierre,
Merci pour le retour.
J'ai effacé le fichier captchatest.php et remis le nouveau code mais je peux toujours envoyé des mails sans blocage.

Montre ton php tu n'as pas bloqué l'envoi à la condition que je t'ai indiqué !!!
<?php
session_start();
header('Content-Type: image/png');
$largeur=80;
$hauteur=25;
$lignes=10;
$caracteres="ABCDEF123456789";
$image = imagecreatetruecolor($largeur, $hauteur);
imagefilledrectangle($image, 0, 0, $largeur, $hauteur, imagecolorallocate($image, 255, 255, 255));
function hexargb($hex) {
    return array("r"=>hexdec(substr($hex,0,2)),"g"=>hexdec(substr($hex,2,2)),"b"=>hexdec(substr($hex,4,2)));
}
for($i=0;$i<=$lignes;$i++){
    $rgb=hexargb(substr(str_shuffle("ABCDEF0123456789"),0,6));
    imageline($image,rand(1,$largeur-25),rand(1,$hauteur),rand(1,$largeur+25),rand(1,$hauteur),imagecolorallocate($image, $rgb['r'], $rgb['g'], $rgb['b']));
}
$code1=substr(str_shuffle($caracteres),0,4);
$_SESSION['captcha']=$code1;
$code="";
for($i=0;$i<=strlen($code1);$i++){
    $code .=substr($code1,$i,1)." ";
}
imagestring($image, 5, 10, 5, $code, imagecolorallocate($image, 0, 0, 0));
imagepng($image);
imagedestroy($image);
?>