• STATISTIQUES
  • Il y a eu un total de 0 membres et 6973 visiteurs sur le site dans les dernières 24h pour un total de 6 973 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    Challenges
    [EN] Sabre Films
    Site de challenge présenté sous la forme d'une quête. Vous êtes un détective et devrez résoudre d...
    Challenges
    [FR] Developpez.net
    Un forum communautaire qui se veut pour les développeurs en générale. Avec presque 500 000 membr...
    Programmation
    [FR] Comment ca marche
     Gratuit et accessible à tous, ce site de communauté permet de se dépanner, se faire aider ...
    Webmaster
    [FR] PHP France
    Pour tout savoir sur le PHP, en français. Vous trouverez des tutoriels, des exemples, des astuces, toute la do...
    Hacking
    [FR] PHP Débutant
    Apprendre le PHP par l'exemple, facilement et simplement. Réservé d'abord aux débutants....
    Programmation
    [FR] µContest
    µContest est un site de challenges de programmation, c'est à dire qu'il propose des épreu...
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Php] Ajouter un captcha facilement et rapidement
17-06-2011, 04h22 (Modification du message : 19-11-2012, 18h55 par InstinctHack.)
Message : #1
CyberSee Hors ligne
Admin fondateur de N-PN
*******



Messages : 1,721
Sujets : 287
Points: 157
Inscription : Jan 2012
[Php] Ajouter un captcha facilement et rapidement
Au travers de mes années de codage, y a une chose avec lequel je dois continuellement me battre ... Les maudits bots qui détectent et spam n'importe quel formulaire ... La seule façon de les empêcher de passer au travers du formulaire c'est dit ajouter ce que l'ont appelle un captcha qui consiste a demander au visiteur de taper le contenu d'une image dans une boîte.

Celui que j'utilise dans tous mes sites se nomme "CaptchaSecurityImages" (probablement un manque d'imagination de l'auteur lol)

CaptchaSecurityImages.php
Code PHP :
<?php
// Modifier par CyberSee

// Déclaration des session
session_start();

// Déclaration de la class
class CaptchaSecurityImages
{
    
    
// On load le nom de la font utilisé pour générer les caractères
    
var $font 'monofont.ttf';

    
// Fonction qui génère une string random alphanumérique
    
function generateCode($characters)
    {
        
// List de tous les caractères autoriser dans la string random
        
$possible '23456789bcdfghjkmnpqrstvwxyz';
        
$code '';
        
$i 0;
        while (
$i $characters) {
            
$code .= substr($possiblemt_rand(0strlen($possible) - 1), 1);
            
$i++;
        }
        return 
$code;
    }
    
    
// Création de l'image avec la librairie GD
    
function CaptchaSecurityImages($width '120'$height '40'$characters '6')
    {   
        
// On va chercher la string
        
$code $this->generateCode($characters);
        
// On détermine que le font va être a 75% en hauteur de l'espace disponible
        
$font_size $height 0.75;
        
// On créé le canvas de l'image
        
$image imagecreate($width$height) or die('Cannot initialize new GD image stream');
        
// On détermine l’arrière-plan de l'image
        
$background_color imagecolorallocate($image255255255);
        
// On détermine la couleur du texte
        
$text_color imagecolorallocate($image2040100);
        
// On détermine la couleur du bruitage
        
$noise_color imagecolorallocate($image100120180);
        
// On créé du bruitage en point dans l’arrière-plan 
        
for ($i 0$i < ($width $height) / 3$i++) {
            
imagefilledellipse($imagemt_rand(0$width), mt_rand(0$height), 11$noise_color);
        }
        
// On créé du bruitage en ligne dans l’arrière-plan 
        
for ($i 0$i < ($width $height) / 150$i++) {
            
imageline($imagemt_rand(0$width), mt_rand(0$height), mt_rand(0$width),
                
mt_rand(0$height), $noise_color);
        }
        
// On ajoute le texte a l'image
        
$textbox imagettfbbox($font_size0$this->font$code) or die('Error in imagettfbbox function');
        
$x = ($width $textbox[4]) / 2;
        
$y = ($height $textbox[5]) / 2;
        
imagettftext($image$font_size0$x$y$text_color$this->font$code) or die('Error in imagettftext function');
        
        
// On affiche l'image
        
header('Content-Type: image/jpeg');
        
imagejpeg($image);
        
imagedestroy($image);
        
        
// On active la session
        
$_SESSION['security_code'] = $code;
    }

}

// On va chercher les variables initialiser dans la source de limage
$width = isset($_GET['width']) && $_GET['width'] < 600 $_GET['width'] : '120';
$height = isset($_GET['height']) && $_GET['height'] < 200 $_GET['height'] : '40';
$characters = isset($_GET['characters']) && $_GET['characters'] > $_GET['characters'] : '6';

// On utilise la class
$captcha = new CaptchaSecurityImages($width$height$characters);

?>

Procédure d'utilisation:
1. Uploader le fichier CaptchaSecurityImages.php (en pièce attachée)
2. Uploader le fichier monofont.ttf http://maplaza.ca/administration/monofont.ttf (hoster gratuitement par moi ici)

Utilisation:
Dans le formulaire ou vous voulez faire apparaitre le captcha ajoutez

Code :
<img src="CaptchaSecurityImages.php?width=100&height=40&characters=3" /><br><br>
Sécurité:<br><input type="text" name="security_code" class="imput_box" style="border:1px;border-color:#000000; border-style: solid;" size="25">

Il ya 3 paramètres éditables passer en variable GET width=100 (La largeur de l'image) height=40 (La hauteur de l'image) characters=3 (Le nombre de caractères) -> C'est pas nécessairement plus sécurisé que d'avoir plus de caractère... c'est juste plus chiant pour l'utilisateur

À la validation, ajouter
Code PHP :
if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {   
// Le code est bon    
} else {  
echo 
"- Désolé, vous devez copier le contenu de l'image dans le champ sécurité.<br>$err";   


Vous pouvez le voir en action sur ce site que j'ai fait
http://renovationrealite.com/index.php?mod=cyber

Veillez cité la source et l'auteur si vous désirer reprendre mon tuto.

Soyez intelligent et restez WhiteHat!
Par CyberSee
+1 (1) -1 (0) Répondre


Messages dans ce sujet
[Php] Ajouter un captcha facilement et rapidement - par CyberSee - 17-06-2011, 04h22
RE: Ajouter un captcha facilement et rapidement - par (Y/n) - 02-04-2012, 23h09
RE: Ajouter un captcha facilement et rapidement - par (Y/n) - 03-04-2012, 05h55
RE: Ajouter un captcha facilement et rapidement - par (Y/n) - 03-04-2012, 18h15
RE: Ajouter un captcha facilement et rapidement - par (Y/n) - 03-04-2012, 22h02

Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
Tongue [JavaScript] faire de l'Ajax facilement InstinctHack 0 142 02-03-2012, 01h39
Dernier message: InstinctHack

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut