Captcha simple en php

Un captcha est une image générée par un script, qui contient des lettres et des chiffres selectionnées au hasard. Ces caractères sont lisibles par des humains mais pas par des robots.

On place un catcha sur un formulaire lorsque l’on veut s’assurer qu’il est bien rempli par un humain (et non par un robot spammeur). On demande à l’utilisateur de recopier les caractères qui sont présents sur le captcha. On ne valide le formulaire que si je code recopié est correct. La plupart des robots ne sont pas capable de lire le captcha correctement.

Il y a beaucoup de script php disponibles sur le net qui proposent de mettre en place un captcha sur un formulaire. Cependant, il est difficile de trouver un script qui fonctionne, soit simple à mettre en place, et qui ne génère pas un captcha illisible… J’ai trouvé un tel script sur phpcs.

Petit exemple d’utilisation :


<?php

if(isset($_POST['captchaResult']))

{

//il faut utiliser les session : la bonne réponse est stockée en session

session_start();

//facultatif : insensibilité à la casse

$_POST['captchaResult'] = strtolower($_POST['captchaResult']);

$_SESSION['captchaResult'] = strtolower($_SESSION['captchaResult']);

//on regarde si la séquence entrée correspond à celle attendue

if($_POST['captchaResult'] !== $_SESSION['captchaResult'])

$message='Le code recopié sur l\'image est incorrect.';

else

$message='C \'est bon !';

}

?>

<form action="index.php" method="post">

<fieldset>

<legend>Captcha</legend>

<?php if(isset($message)) echo '<p>'.$message.'</p>'; ?>

<p>

<label for="captcha">Veuillez recopier le code affiché : </label>

<input type="text" name="captchaResult" id="captcha" />

<br />

<!-- le script captcha.php renvoit une image -->

<img src="captcha.php" alt="" />

</p>

<input type="submit" value="Ok" />

</fieldset>

</form>

Réagir

[ Ctrl + Enter ]