Loading:


Token, captacha, kodweryfikacyjny PHP

Skrypt tworzy ciekawy token aby działał musicie go katalogu ze skryptem wgrać dowolną czcionkę true type .ttf



Napisz Artyku³

Listing


<?php
/* captcha_image.php */

/* Długoœć hasła */
$pass_length = 4;

/* Wymiary obrazu */
$width = 200;
$height = 60;

/* Œcieżka do czcionki TTF */
$font_path = dirname(__FILE__);

session_start();

/* Tworzy hasło. */
$passwd = "";
$i = 0;
while ($i < $pass_length) {
    $passwd .= chr(rand(97, 122));
    $i++;
}

/* Składuje hasło. */
$_SESSION["tt_pass"] = $passwd;

/* Uzyskuje listę dostępnych czcionek. */
$fonts = array();

if ($handle = opendir($font_path)) {
    while (false !== ($file = readdir($handle))) {
        /* Poszukuje czcionek TTF. */
        if (substr(strtolower($file), -4, 4) == '.ttf') {
            $fonts[] = $font_path . '/' . $file;
        }
    }
}       

if (count($fonts) < 1)  {
    die("Nie znaleziono czcionek!");
}

/* Nagłówek obrazu: */
header("Content-Type: image/jpeg");
/* Nagłówki przeciwdziałajšce składowaniu obrazu w pamięci podręcznej: */
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");

/* Tworzy obraz. */
$img = imagecreatetruecolor($width, $height);
 
/* Wypełnia tło losowym odcieniem pastelowym. */
$bg = imagecolorallocate($img, rand(210,255), rand(210,255), rand(210,255));
imagefilledrectangle($img, 0,0, $width, $height, $bg);

/* Komplikuje tło obrazu, uzupełniajšc je o różnokolorowe,
   czworokštne figury. */

 
/* Tworzy linie gruboœci od 10 do 30 pikseli rozcišgajšce się na całym obrazie. */
$right = rand(10, 30);
$left = 0;
while ($left < $width) {
    $poly_points = array(
        $left, 0,                                 /* Lewy, górny narożnik */
        $right, 0,                                /* Prawy, górny narożnik */
        rand($right-25, $right+25), $height,      /* Prawy, dolny narożnik */
        rand($left-15, $left+15), $height);       /* Lewy, dolny narożnik */
   
    /* Tworzy wielokšt, wykorzystujšc losowe punkty składowane w tablicy. */
    $c = imagecolorallocate($img, rand(210,255), rand(210,255), rand(210,255));
    imagefilledpolygon($img, $poly_points, 4, $c);
       
    /* Zbliża się do prawej krawędzi. */
    $random_amount = rand(10, 30);
    $left += $random_amount;
    $right += $random_amount;
}

/* Wybiera podstawowy przedział wartoœci kolorów dla pionowych i poziomych linii. */
$c_min = rand(120, 185);
$c_max = rand(195, 280);

/* Rysuje przypadkowe, pionowe linie na całej szerokoœci obrazu. */
$left = 0;
while ($left < $width) {
    $right = $left + rand(3, 7);
    $offset = rand(-3, 3);                       /* Przesunięcie decydujšce o nachyleniu */
       
    $line_points = array(
        $left, 0,                                /* Lewy, górny narożnik */
        $right, 0,                               /* Prawy, górny narożnik */
        $right + $offset, $height,               /* Prawy, dolny narożnik */
        $left + $offset, $height);               /* Lewy, dolny narożnik */
       
    $pc = imagecolorallocate($img, rand($c_min, $c_max),
                                   rand($c_min, $c_max),
                                   rand($c_min, $c_max));
    imagefilledpolygon($img, $line_points, 4, $pc);
       
    /* Zbliża się do prawej krawędzi. */
    $left += rand(20, 60);
}
 
/* Rysuje przypadkowe, poziome linie na całej wysokoœci obrazu. */
$top = 0;
while ($top < $height) {
    $bottom = $top + rand(1, 4);
    $offset = rand(-6, 6);                    /* Przesunięcie decydujšce o nachyleniu */
       
    $line_points = array(
        0, $top,                              /* Lewy, górny narożnik */
        0, $bottom,                           /* Lewy, dolny narożnik */
        $width, $bottom + $offset,            /* Prawy, dolny narożnik */
        $width, $top + $offset);              /* Prawy, górny narożnik */
    $pc = imagecolorallocate($img, rand($c_min, $c_max),
                                   rand($c_min, $c_max),
                                   rand($c_min, $c_max));
    imagefilledpolygon($img, $line_points, 4, $pc);
    $top += rand(8, 15);
}
 
/* Określa odległość dzielącą znaki. */
$spacing = $width / (strlen($passwd)+2);

/* Poczštkowa współrzędna pozioma */
$x = $spacing;

/* Rysuje poszczególne znaki. */
for ($i = 0; $i < strlen($passwd); $i++) {
    $letter = $passwd[$i];
    $size = rand($height/3, $height/2);
    $rotation = rand(-30, 30);
         
    /* Losowa współrzędna pionowa z przestrzeniš na wyższe znaki */
    $y = rand($height * .90, $height - $size - 4);

    /* Wybiera losowš czcionkš. */
    $font = $fonts[array_rand($fonts)];

    /* Wybiera kolor dla danej litery. */
    $r = rand(100, 255); $g = rand(100, 255); $b = rand(100, 255);

    /* Tworzy kolory samej litery i jej cienia. */
    $color = imagecolorallocate($img, $r, $g, $b);
    $shadow = imagecolorallocate($img, $r/3, $g/3, $b/3);
         
    /* Rysuje kolejno cień litery i samš literę. */
    imagettftext($img, $size, $rotation, $x, $y, $shadow, $font, $letter);
    imagettftext($img, $size, $rotation, $x-1, $y-3, $color, $font, $letter);

    /* Przechodzi do kolejnej pozycji na danej kanwie. */
    $x += rand($spacing, $spacing * 1.5);  
}

imagejpeg($img);          /* Wysyła gotowy obraz. */
imagedestroy($img);       /* Zwalnia pamięć obrazu. */

?>
 




Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
Komentarze użytkowników
    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2020 v.1.5 | design: diviXdesign & rainbowcolors