Télécharger
Noter:

Ajouté le 16/03/2015
Visionné 18626 fois
4.2/5

Captcha simple en PHP

Description

Cette image captcha est générée via PHP, le code source est simple et super facile d'utilisation!

Un aperçu:




Un autre type de captcha est disponible ici: Captcha innovant (Avec liste déroulante)

<?php
session_start();//on enregistre la session, pour le code, pour la vérification du formulaire
//le fichier se nomme: image.php
//on indique au header qu'il faut afficher le code en tant qu'image
header('Content-Type: image/png');
$largeur=80;//largeur de l'image
$hauteur=25;//hauteur de l'image
$lignes=10;//nombre de lignes multicolore qui seront affichées avec le code (10 est bien)
$caracteres="ABCDEF123456789";//type de caractère du code qui sera affiché dans l'image
//on crée le rectangle
$image = imagecreatetruecolor($largeur, $hauteur);
//on met un fond en blanc (255,255,255)
imagefilledrectangle($image, 0, 0, $largeur, $hauteur, imagecolorallocate($image, 255, 255, 255));
//on ajoute les lignes
function hexargb($hex) {//fonction qui permet de retourner la valeur en RGB d'une couleur hexadécimale
return array("r"=>hexdec(substr($hex,0,2)),"g"=>hexdec(substr($hex,2,2)),"b"=>hexdec(substr($hex,4,2)));//on retourne la valeur sous forme d'array
}
for($i=0;$i<=$lignes;$i++){
$rgb=hexargb(substr(str_shuffle("ABCDEF0123456789"),0,6));//choisi une couleur aléatoirement (str_shuffle), de 6 caractères (substr(chaine,0,6)) avec la sélection alphanumérique
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['code']=$code1;//on enregistre le code dans une session pour vérifier ensuite se qu'à entré le visiteur est identique
$code="";//on initialise le code
for($i=0;$i<=strlen($code1);$i++){
$code .=substr($code1,$i,1)." ";//on rajoute des espace entre chaque lettre ou chiffre pour faire plus aéré (notez le . devant = qui permettra d'ajouter un caractère après l'autre à $code)
}
//on écrit le code dans le rectangle
imagestring($image, 5, 10, 5, $code, imagecolorallocate($image, 0, 0, 0));
//on affiche l'image
imagepng($image);
//puis on détruit l'image pour libérer de l'espace
imagedestroy($image);
?>


//page contact.php
session_start();
if(isset($_POST['captcha'])){
if($_POST['captcha']==$_SESSION['code']){
echo "Code correct";
} else {
echo "Code incorrect";
}
}


<!-- page contact.php -->
<form action="contact.php" method="post">
<input type="text" name="captcha"/>
<input type="submit"/>
<img src="image.php" onclick="this.src='image.php?' + Math.random();" alt="captcha" style="cursor:pointer;">
</form>


Math.random() nous permet de demander une nouvelle image car elle fait en sorte de recharge l'image par une autre en disant que c'est pas la même, on rajoute juste du code du style image.php?0.9610655198268976
Math.random() en JavaScript permet d'afficher un chiffre de type flottant, de 0 à 1 (1 n'est jamais affiché vu que c'est un nombre à virgule)


style="cursor:pointer;" affiche une main au lieu de la flèche classique, au survol du code, côté esthétique, je trouve ça plus jolie.


Les codes de sécurités sur les formulaires des pages web sont importants car ils permettent vérifier si c'est pas un robot, l'humain doit recopier un code (souvent en image) dans un champ spécifique.

Commentaires

lemask le 28 Janvier 2016 à 11:54

Merci pour ces informations

Gamer le 30 Avril 2017 à 14:23

J'utilise ce script dans mon site mais quand je fais if isset ....
Le $post ne marche pas.

Je n'utilise pas le header parce que ça affiche que l'image sans le input zones


P.s: le script est fait include et avant ce script j'utilise head où il y a déjà session start

admin le 01 Mai 2017 à 14:10

Quel erreur avez-vous à l'écran quand vous postez le formulaire ?

Gamer le 13 Mai 2017 à 12:55

Je n'ai pas d'erreur mais ça n'affiche pas les input et les labels, vu qu'il y a

header(type image/png)

Cordialement.

admin le 13 Mai 2017 à 15:03

Bonjour, le code du captcha est un fichier appart, il se nomme image.php, pas besoin d'include se fichier il sera appelé avec l'affichage de l'image:

...<img src="image.php" onclick="thi...

boussad le 11 Janvier 2019 à 22:04

comment je doit faire pour l’utilisation correcte de ce script et merci d'avance

admin le 12 Janvier 2019 à 10:15

Bonjour, apprendre un minimum le PHP.

Ajouter un commentaire

Pseudo/Nom *
Email *
Message *
La balise [code]Votre code...[/code] peut être utilisée

Captcha * memo2

Les champs marqués d'un * sont obligatoires.

Retour à la liste des scripts

Flag Counter