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
Jako scieżke do obrazka poprostu podajemy adres do kodu token.php
Całość przedstawiona jest na lisingu poniżej.
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
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
:: Losowe artykuły
:: Wymiana linków
Modowe inspiracje |
Android Gry i Aplikacje |
ZaplanujTransport.pl: Przeprowadzki, transport, aukcje |
Logo dla firmy |
Change Tires - Car Weather Forecast Reminder |
Laminas: MVC Framework for PHP |
IT Books Reviews and Programming: JS, JAVA, PHP, ANDROID, CSS |
Katalog roślin |
Programming articles: JAVA, PHP, C++, Python, JavaScript |
Kancelaria Adwokacka Łukasz Huszno