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


  • ANNUAIRE
  • [EN] w3challs
    Ce site propose différents types de défis informatiques: piratage, craquage, cryptographie, stég...
    Hacking
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking
    [EN] Net Force
    Javascript: 9, Java Applets: 6, Cryptography: 16, Exploits: 7, Cracking: 14, Programming: 13, Internet: 15, Steganograph...
    Challenges
    [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges
    [FR] Hackfest
    Le Hackfest est un évènement de sécurité et de piratage informatique au Québec reg...
    Hacking
    [EN] SecurityFocus
    SecurityFocus a été conçu pour faciliter la discussion sur des sujets liés la sécu...
    Vulnérabilités
    [EN] xda-developers
    Très bon site pour les gros bidouilleurs de smartphone de windows à androïd et de Apple jusqu'...
    Phreaking

  • 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 111 02-03-2012, 01h39
Dernier message: InstinctHack

Atteindre :


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