Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> CAPTCHA class pre relase
kkrzyzak
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 21.01.2007

Ostrzeżenie: (0%)
-----


Witam. Ostatnio zainteresowało mnie to, co kiedyś uważałem za największe zło- Captha. Uważałem tak, głównie ze względu na dostępność- jednak opróćz tego standardowe capthy są często dość proste do złamania- potwierdza to min. ta strona z tego też powodu postanowiłem się wziąć za swój wynalazek, który będzie troszkę odmienny od innych prezentowanych Capth.
Czym zatem różni się moja Captha od innych?
Tutaj nie trzeba przepisać jakiegoś konkretnego słowa- należy natomiast podać ilość symboli- w chwili obecnej są to bardzo tandetne kółka- docelowo zastanawiam się nad jakimiś zwierzątkami bądź znaczkami.
Jest to baaardzo wczesna wersja- na chwilę obecną nie nadaje się jeszcze do zastosowania jako captha w jakimkolwiek serwisie, jednak cały czas nad nią pracuję.
TODO:
-większa elastyczność (póki co tylko wielość CAPTHy jest w miarę edytowalna, natomiast kolorystyka itp- nie bardzo) -jednak to z tego powodu, że: captha będzie korzystała z kilku różnych teł, a kolorystyka kółek i tak chyba zostanie wymieniona.
-zrobienie pytania w stylu "ile jest żółtych kółek na obrazku" - tu jednak muszę dobrać takie kolory, by daltoniści nie mieli problemów (o ile takie kolory istnieją....)
-implementacja jakichś obrazków zamiast figur geometrycznych (muszę jednak znaleźć coś małego i łatwo rozpoznawalnego)
-poprawienie buga - w chwili obecnej obrazki są tworzone w temp`ie a nie są usuwane- po paru testach muszę ręcznie usuwać stare obrazki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Kod Klasy:
  1. <?php
  2. class Kaptha{
  3. private $width='300';
  4. private $height='100';
  5.  
  6.  
  7. function showCaptha(){
  8. $img = @imagecreatetruecolor($this->width, $this->height);
  9. if(!$img){
  10. throw new exception('Cannot create image');
  11. }
  12. return $this->drawElipse($img);
  13. }
  14.  
  15.  
  16. function drawElipse($img){
  17.  
  18. $col_ellipse = imagecolorallocate($img, 255, 255, 255);
  19. $col_rectangle = imagecolorallocate($img, 50, 55, 50);
  20.  
  21. $elipses=rand(0,7);
  22. $correctResult=10-$elipses;
  23.  
  24. for($elipses;$elipses<10;$elipses++){
  25. $horizonPos+=rand(15,20);
  26. imageellipse($img, $horizonPos, rand(15,80), 10, 10, $col_ellipse);
  27. }
  28.  
  29. // for($i=rand(5,8);$i<10;$i++){
  30. // imagerectangle($img,rand(10,90),rand(10,100),rand(20,190),rand(80,160),$col_rectangle);
  31. // }
  32.  
  33. $imgname=base64_encode('captha').rand(0,999);
  34. imagepng($img,'temp/'.$imgname.'.png');
  35. $_SESSION['CapthaCorrectResult']=$correctResult;
  36. return 'temp/'.$imgname.'.png';
  37. // imagedestroy($img);
  38.  
  39. }
  40.  
  41. }
  42. ?>

użycie:
  1. <?php
  2. include('captha.class.php');
  3. $captha = new Kaptha;
  4. echo '<img src="'.$captha->showCaptha().'" />';
  5. print_r($_SESSION);
  6. ?>

dla osób niecierpliwych- screen działania (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
(IMG:http://img214.imageshack.us/img214/3096/captha5hl.th.jpg)

Jak już mówiłem, klasa jest na bardzo wczesnym stopniu rozwoju. Prosiłbym jednak o wszelkie sugestie dotyczące implementacji- klasa będzie na GPL`u, i chciałbym, aby przydała się komukolwiek (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
---------------------------UPDATE-----------------------------
ok, zamiast kółek są uśmiechnięte buźki i dla utrudnienia smutne- wiem, troszkę captha dla debili, ale narazie takie obrazki znalazłem, które sa łatwo rozpoznawalne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
w chwili obecnej największym problemem jest to, że zdarza się, że ikony nachodzą na siebie- postaram się to naprawić w najbliższym czasie. Dodałem też podgląd aktualnego postępu prac

Ten post edytował kkrzyzak 21.01.2007, 15:29:55
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:32