Loading:


    Jak zrobić Token w PHP (captcha)

    Skrypt tworzy 5 cyfrowy token z liczb 23456789 bez 0 i 1 ponieważ przypominają one O i l wiec pozbyliśmy się ich.

    Wymiary tokena określiliśmy w zmiennych:
    $img_width = 100;
    $img_height = 16;

    Aby wyświetlić token w wyznaczonym miejscu wystarczy kod:

    <img src="token.php" alt="token" style="vertical-align: middle" />

    Jako scieżke do obrazka poprostu podajemy adres do kodu token.php



    Całość przedstawiona jest na lisingu poniżej.




    Napisz Artyku³

    Listing


    // KOD PLIKU token.php
    <?    
        session_start();
        $pool = '23456789'; //liczby z których bedziemy losować token
        $img_width = 100; //wymiary tokena
        $img_height = 16;

        $str = ''; //wyzerowanie tokena
        for ($i = 0; $i < 5; $i++){ // losowanie liczb
            $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
        }

        $string = $str;
        $_SESSION['captcha'] = $string; //tworzymy sesje z wartością tokena

        $im = imagecreate($img_width, $img_height); //tworzymy obrazek

        $bg_color     = imagecolorallocate($im,255,255,255); // kolor tła
        $font_color   = imagecolorallocate($im,0,0,0); // kolor czcionki
        $grid_color   = imagecolorallocate($im,246,246,246); // kolor lini
        $border_color = imagecolorallocate ($im, 246, 246, 246); // kolor ramki

        // Tworzenie tokena
           
            imagefill($im,1,1,$bg_color);

       
             ImageLine($im,90,0,90,30,$grid_color); //1
             ImageLine($im,10,0,10,30,$grid_color); //2
             ImageLine($im,20,0,20,30,$grid_color); //1
             ImageLine($im,30,0,30,30,$grid_color); //1
             ImageLine($im,40,0,40,30,$grid_color); //1
             ImageLine($im,50,0,50,30,$grid_color); //1
             ImageLine($im,60,0,60,30,$grid_color); //1
             ImageLine($im,70,0,70,30,$grid_color); //1
             ImageLine($im,80,0,80,30,$grid_color); //1
             
             ImageLine($im,0,5,100,5,$grid_color); //1
             ImageLine($im,0,10,100,10,$grid_color); //1
             ImageLine($im,0,15,100,15,$grid_color); //1


        $x = rand(5, $img_width/(7/2)); // pozycja liczb w tokenie

        imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color);

        for($a=0; $a < 7; $a++){

            imagestring($im, 3, $x, 1, substr($string, $a, 1), $font_color);
            $x += (5*2); #odstęp

        }

        header("Content-type: image/gif");
        imagegif($im);
        imagedestroy($im);

    ?>
     




    Dodano przez: igor
    Ranga: Administrator serwisu Punktów: 0
    Komentarze użytkowników
    Strasznie słaby token, pierwszy lepszy spmaer żlamie taką standordową czcionkę OCrem
    autor: R4D3K | 369 | 2009-07-20 17:08:38


    Ten token używam na stronie gdzie było mnustwo botów spamujących i zatrzymuje 100% jedynie ktoś kto specjalnie uprze sie na twoją strone poradzi sobie z tym tokenem, ale standardowo to najlepsze rozwiązania gdzie użytkownik nie ma problemu z odczytaniem go poza tym jest łatwy do konfiguracji i można go łatwo zmianić na trudniejszy. Dodatkowo do tokena polecam sprawdzanie skąd idą dane post czy get.
    autor: Igor | 370 | 2009-07-20 21:04:27


    Fajny token, ale mam mały problem, włożyłem go do formularza jednak czy wpisze się dobrze czy źle, i tak wysyła maila i nie wyskakuje mi żaden komunikat, co mogłem źle zrobić? :) Z góry dzięki za rady
    autor: początkujący | 420 | 2009-08-18 22:01:53


    musisz porównać to co wpisał użytkownik z tym co jest w $_SESSION['captcha'] jeśli to samo to wysyłasz jeśli nie to dajesz ze zły token
    autor: Igor | 421 | 2009-08-19 11:42:03


    tez mam podobny problem pokazal mi sie token przy przycisku wyslij ale nie moge nigdzie wpisac tego tokena.
    autor: graftec | 12748 | 2012-02-15 22:04:36


    Panie adminie... ja już próbowałem na wszystkie sposoby i sprawa wygląda tak że obojętnie co wpiszę w tokena to i tak i tak wysyła... inaczej sprawa wygląda jak nic nie wpisze wtedy nie a jak coś obojętnie co wpiszę to wysyła...
    autor: matius | 12847 | 2012-08-02 20:09:24


      • 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