Poniżej mam plik captcha.php który generuje obrazek:
<? $znaki = 'ABCDEFGHIJKLMNPQRSTUWXYZ123456789'; $cap = imagecreatefromjpeg($obrazek_tla); $kolor = imagecolorallocate($cap, 250, 250, 250); $linie = imagecolorallocate($cap, 205, 205, 205); for($x = 1; $x <= 50; $x++) // powtarzamy 50 razy - rysujemy 50 linii imageline ( // funkcja rysująca linię $cap, // uchwyt obrazka 0, // współrzędna X początku linii imagesx($cap), // współrzędna X końca linii $linie // kolor linii ); for($x = 1; $x <= $liczba_znakow; $x++) { imagettftext ( // funkcja pisząca tekst $cap, // uchwyt obrazka $odleglosc_miedzy_znakami, // odległość między znakami $kolor, $czcionka, $znak ); } imagejpeg($cap); ?>
System mam oparty na smartach, ale nie będę tego tak przedstawiał bo tylko się namiesza. Więc załóżmy że mam plik register.php:
<? { $token = $_POST['token']; $token_z_obrazka = ... // no właśnie... jak odebrać token z obrazka? } else { ?> <form method="post" action=""> Kod: <img src="captcha.php" alt="obrazek" /><input type="text" name="token" /><br /> <input type="submit" name="zarejestrowano" value="ZAREJESTRUJ!" /> </form> <? } ?>
Na początku próbowałem utworzyć zmienną sesji $_SESSION['token'] i w pliku captcha.php dodawać kolejne znaki do niej. Ale nie działało, poza tym zastanawiam się czy by to było bezpieczne.
Proszę o jakieś sugestie i z góry dzięki
