Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]prosta captcha
Forum PHP.pl > Forum > Przedszkole
pifarek
Napisałem sobie prostą klasę do obsługi captcha i zastanawiam się czy jest to w miarę sensownie napisane, bo nie wzorowałem się na niczym innym.
Proszę o rady. smile.gif
  1. class captcha
  2. {
  3. static $image;
  4. static $string;
  5. static $font = 'captcha.ttf';
  6. static $type = 'random'; /* random, words */
  7.  
  8. static public function image ()
  9. {
  10. echo '<img src="captcha.render.php" alt="captcha" />';
  11. }
  12.  
  13. static public function render ()
  14. {
  15. self::set();
  16. $_SESSION["captcha"] = self::$string;
  17. self::create();
  18. }
  19.  
  20. static private function create()
  21. {
  22. $string = $_SESSION["captcha"];
  23. header('Content-type: image/png');
  24. self::$image = imagecreatefromjpeg ( 'captcha.jpg' );
  25. $text_color = imagecolorallocate(self::$image, 130, 130, 130);
  26. imagettftext(self::$image, 15, 0, 20, 27, $text_color, self::$font, $string);
  27. imagepng(self::$image);
  28. imagedestroy(self::$image);
  29. }
  30.  
  31. static private function set()
  32. {
  33. switch ( self::$type )
  34. {
  35. case 'random':
  36. for ( $i = 0; $i < 5; $i++ )
  37. {
  38. $string .= chr ( rand ( 97, 122 ) );
  39. }
  40. self::$string = $string;
  41. break;
  42. case 'word':
  43. /* nie dziala */
  44. break;
  45. }
  46. }
  47. }
lukasz.adamczewski
niby ok, tylko brakuje jeszcze najważniejszego czyli walidacji captchy, wydaje mi się też że pokazywanie tekstu z tlem w takiej wersji jak jest teraz może być łatwe do zgadnięcia przez roboty. zastanów się też czy ładowanie wszystkiego w static ma sens, bo chyba lepiej byłoby tworzyć nową instancję captchy przy danym użyciu jej w określonym momencie.

niby ok, tylko brakuje jeszcze najważniejszego czyli walidacji captchy, wydaje mi się też że pokazywanie tekstu z tlem w takiej wersji jak jest teraz może być łatwe do zgadnięcia przez roboty. zastanów się też czy ładowanie wszystkiego w static ma sens, bo chyba lepiej byłoby tworzyć nową instancję captchy przy danym użyciu jej w określonym momencie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.