Marusz Logo
Strona główna
Artykuły
Seriale, daty premier
Kontakt
Promowane artykuły:
Dreamhost i czas warszawski
WinBinder - wprowadzenie
Prosty packer CSS
Zend Studio i Ubuntu
WebMail Claros Software
Miasto Plusa - bramka napisana w PHP
Płatnik na Laptopie - opis instalacji
Płatnik - przeniesienie programu
Captcha w PHP - prosty przykład
Linux, skrypt txt2srt
Windows, prosta konwersja txt2srt
Linux, NapiProjekt, TXT i SRT

Jak zrobić zabezpieczenie formularza metodą obrazkową (Captcha)

2007-06-13 21:56

Poniższy skrypt ma już cztery lata. Być może można zrobić to jeszcze prościej, nie wnikam. Osobiście średnio preferuję taką metodę zabezpieczania formularza, lecz jest ona wszechobecna i przyszło niegdyś mi się z takim problemem zmierzyć. Może ktoś będzie potrzebował:
- Wersja demo
- Źródła
- Całość do pobrania

$_SESSION["captcha"] = substr(str_replace(array(1, 0, "O", "I", "L"), array("X"), strtoupper(md5(date("Y-m-d H:i:s" . rand(0, 999))))), 0, 6);

oznacza wygenerowanie stringu, składającego się tylko i wyłącznie z dużych liter i cyfr, obciętego do 6 znaków. Dodatkowo str_replace zastępuje znaki do siebie często podobne literą "X". Wszystko po to, aby po doborze kiepskiej czcionki użytkownicy nie łamali sobie głowy, czy 1 to I lub 0 to O.

imagettftext($i, 25, rand(-7, 7), rand(1, 20), ceil(next(getimagesize($imgPatch . $images))/2)+10, imagecolorallocatealpha($i, 255, 255, 255, 60), $fonts, $_SESSION["captcha"]);


Wykorzystuję funkcję imagettftext do nałożenia tekstu na obrazek. Pierwszy parametr $i określa zmienną, która przechowuje uchwyt do obrazka nad którym pracujemy. Kolejno rand(-7, 7) to kąty generowanego tekstu, rand(1, 20) losowy odstęp w osi x, ceil(...) to odmierzenie wysokości obrazka, podział tego na 2 i dodanie 10 (aby tekst był mniej więcej na środku). imagecolorallocatealpha() definiuje nam kolor tekstu - ostatni parametr (tutaj 60) to określenie transparentności napisu. Można eksperymentować. Kolejno to ścieżka do fontu oraz tekst captchy.

Powodzenia.

Komentarze

freebox @ 89.107.158.*

wysłany: 2008-10-13 22:58

ba, ale linki nie działają...

Marusz @ 78.8.59.*

wysłany: 2009-08-16 22:01

Już poprawione.

Piotrek @ 93.105.83.*

wysłany: 2010-02-02 10:11

Wygląda fajnie szkoda tylko że nie wysyła na maila tego formularza a pod mój skrypt nie potrafie tego podpiąć może ktoś wie w którym miejscu trzeba wkleić linijke
aby wysłało mi maila, w komentarzu to pewnie raczej nie dostane odpowiedzi :/

Marusz @ 78.8.52.*

wysłany: 2010-02-02 10:59

Witaj. Najlepiej użyj klasy phpmailer (stąd: http://tinyurl.com/n37j5q). Opis jak wysłać e-mail poprzez tą klasę znajdziesz tutaj: http://tinyurl.com/ylynl95

kamila @ 78.16.248.*

wysłany: 2010-02-06 12:48

Witam.
Sciagnelam juz pliki ale nie bardzo wiem gdzie je podpiac :(
moge prosic o łopatologiczny wyklad co dalej z tym?
z gory dziekuje i pozdrawiam

kisiell @ 83.8.18.*

wysłany: 2010-05-28 15:58

Wie ktoś może jak to można podpiąć pod formularz rejestracji? ale chciałbym żeby tylko był kod do przepisania ,i po tym mozna bylo sie rejestrowac.

Rejestracja

Powrót do logowania

Login :

E-Mail :

GG :

Nr. Tel. :

Hasło :

Powtórz hasło :

jezeli wie ktoś jak to zrobić to proszę niech napisze na : qazwer8@o2.pl to wtedy podam kod php rejestracji

pff @ 87.105.51.*

wysłany: 2010-05-28 21:49

sam se napisz a nie frajera szukasz! a jak nie potrafisz, to znajdz kogos, kto ci to napisze za siano

do pff @ 77.65.42.*

wysłany: 2010-12-31 18:27

ale jesteś piżdzielczyk

adam @ 83.238.7.*

wysłany: 2011-08-10 14:08

babab czemu nie

MB @ 83.10.163.*

wysłany: 2013-11-07 18:55

A napisz w jakim formacie to zapisać. Skoro taki mądry

do MB @ 78.8.41.*

wysłany: 2013-11-08 08:25

co w jakim formacie zapisać?


Wpisz swoje imię, pseudonim:

Wpisz treść: