2010-09-07 19 views
-3

J'ai ce script captcha simple en ligne. Je l'aime, et je l'ai édité en fonction de mon site, mais je me demandais si quelqu'un pourrait le modifier pour ajouter des lignes aléatoires sur le captcha lui-même car c'est un peu trop simple.Ajouter du bruit supplémentaire à l'image Captcha?

J'ai trouvé des tutoriels sur la façon de le faire mais ça ne fonctionnait pas pour moi.

Voici le script captcha simple; J'aimerais modifier pour avoir des lignes aléatoires apparaissent sur le captcha:

$width = 150; 
    $height = 24; 
    $length = 5; 
    $font  = 'caviardreams.ttf'; 
    $font_size = 14; 
    $bg_color = array(245, 245, 245); 
    $chars = 'ABCDEFGHKMNPQRSTUVWXYZ23456789'; 
    session_start(); 
    //putenv('GDFONTPATH=' . realpath('.')); 
    $img = imagecreatetruecolor($width, $height); 
    $bkgr = imagecolorallocate($img, $bg_color[0], $bg_color[1], $bg_color[2]); 
    imagefilledrectangle($img, 0, 0, $width, $height, $bkgr); 

    $code = ''; 
    for($i = 0; $i < $length; $i++) 
    { 
     $code .= $chr = $chars[mt_rand(0, strlen($chars)-1)]; 
     $r = rand(0, 192); 
     $g = rand(0, 192); 
     $b = rand(0, 192); 
     $color = imagecolorallocate($img, $r, $g, $b); 
     $rotation = rand(-35, 35); 
     $x = 5+$i*(4/3*$font_size+2); 
     $y = rand(4/3*$font_size, $height-(4/3*$font_size)/2); 
     imagettftext($img, $font_size, $rotation, $x, $y, $color, $font, $chr); 
    } 

    $_SESSION['random_txt'] = md5($code); 

    header("Content-type: image/png"); 
    header("Expires: Mon, 01 Jul 1998 05:00:00 GMT"); 
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
    header("Cache-Control: no-store, no-cache, must-revalidate"); 
    header("Cache-Control: post-check=0, pre-check=0", false); 
    header("Pragma: no-cache"); 

    imagepng($img); 
    imagedestroy($img); 
+2

Pourquoi ne pas simplement utiliser un script captcha déjà et libre d'utilisation? Il est appelé 'recpatcha' et est disponible à http://www.recaptcha.org –

+1

Ce serait: http://www.recaptcha.org/ – Evert

+0

Salut j'ai toujours utilisé recaptcha mais je ne l'aime pas maintenant, je ne ' t aime le fait que si javascript est désactivé par l'utilisateur il affiche affreux sur la page Web plus c'est maladroit donc pourquoi j'ai abandonné recaptcha après l'avoir utilisé pendant environ 2 ans, j'ai redessiné mon site web et il ne convient pas à mon site, plus j'ai 2 autres méthodes que j'ai implémentées avec le captcha pour aider à prévenir les spambots. Je cherche juste quelqu'un pour modifier le code pour ajouter des lignes au hasard pour moi s'ils ne me dérange pas, je ne veux pas employer d'autres manuscrits que je veux garder à celui-ci car c'est simple et pas s'enliser. Merci – PHPLOVER

Répondre

2

Juste avant:

$_SESSION['random_txt'] = md5($code); 

Insérer:

for ($i=0;$i<100;$i++) 
    imageline($img,mt_rand(0,$width),mt_rand(0,$height),mt_rand(0,$width),mt_rand(0,$height),imagecolorallocate($img,rand(0,63),rand(0,63),rand(0,63))); 
+0

Merci encore, beaucoup appréciez votre temps et aide :) Merci beaucoup! – PHPLOVER

0

Étant donné que vous voulez coller avec ce script, vous pouvez regarder this scripts source et savoir comment le faire les modèles de conception. Désolé si ce n'est pas la réponse que vous recherchez. Les sections Je vous destinons à se concentrer sur serait:

/* generate random lines in background */ 
/* generate random dots in background */ 

Ces deux éléments semblent être jusqu'à votre allée de ce que vous voulez faire.