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: 0
    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-2025 v.1.5 | design: diviXdesign & rainbowcolors