Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nie działające prawidłowo captcha
michal16202
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.05.2014

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


Witam, znalazłem na internecie taki skrypt do captchy ale nie działa prawidłowo, co innego generuje a co innego przekazuje o zmiennej sesyjnej.
  1. <?php
  2. $znaki = 'ABCDEFGHIJKLMNPQRSTUWXYZ123456789'; // dozwolone znaki
  3. $szerokosc = 120; // szerokość obrazka
  4. $wysokosc = 30; // wysokość obrazka
  5. $ilosc_znakow = 6; // długość captchy
  6. $str = ''; // zmienna pomocnicza
  7.  
  8. // losowanie ciągu znkaów
  9. for ($i = 0; $i < $ilosc_znakow; $i++)
  10. $str .= substr($znaki, mt_rand(0, strlen($znaki) -1), 1);
  11.  
  12. $string = $str;
  13. $_SESSION['captcha'] = $string; // przypisanie do zmiennej sesyjnej
  14.  
  15. // tworzenie obrazka o danych wymiarach
  16. $im = imagecreate($szerokosc, $wysokosc);
  17.  
  18. //kolory obrazka
  19. $tlo = imagecolorallocate($im,0,0,0);
  20. $czcionka = imagecolorallocate($im,255,255,255);
  21. $siatka = imagecolorallocate($im,78,78,78);
  22. $ramka = imagecolorallocate ($im, 255, 0, 0);
  23.  
  24. imagefill($im,1,1,$tlo); // wypełnienie tłem
  25.  
  26. // losowanie siatki
  27. for($i=0; $i<1600; $i++)
  28. {
  29. $rand1 = rand(0,$szerokosc);
  30. $rand2 = rand(0,$wysokosc);
  31. imageline($im, $rand1, $rand2, $rand1, $rand2, $siatka);
  32. }
  33.  
  34. // losowanie pozycji znaków
  35. $x = rand(5, $szerokosc/(7/2));
  36.  
  37. // dodawanie obramowania
  38. imagerectangle($im, 0, 0, $szerokosc-1, $wysokosc-1, $ramka);
  39.  
  40. // umieszczanie liter na obrazku
  41. for($a=0; $a < 7; $a++)
  42. {
  43. imagestring($im, 6, $x, rand(4 , $wysokosc/5), substr($string, $a, 1), $czcionka);
  44. $x += (5*3); // odstęp między literami
  45. }
  46.  
  47. // zwrócenie wygenerowanego obrazka, ustawienie typu mime na GIF
  48. header("Content-type: image/gif");
  49. imagegif($im);
  50. imagedestroy($im);
  51.  
  52. ?>


A tak go dodaje na strone:
  1. <?php
  2. echo $_SESSION['captcha'];
  3. ?>
  4. <img src="/captcha.php" />


To jest jedyne captcha jakie działa mi. Wszystkie inne wywalały znajomy error z błędem obrazka.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
kartin
post
Post #2





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

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


Wyświetla się kod z poprzedniego obrazka?

Zrób 2 strony. Jedną która wyświetla $_SESSION['captcha'];, a na drugiej stronie zrób wyświetlenie obrazka i link do pierwszej strony.


--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post
michal16202
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.05.2014

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


Tak, wyświetla wcześniejszy kod niż jest na obrazku ale jak wszedłem na strone captcha.php a na innej dałem samo echo z tą sesją to oba kody się zgadzały. Jeśli dobrze zrozumiałem mam dodać do captcha.php link do strony tam gdzie ma być użyty $_SESSION['captcha']; tyle że jak cokolwiek dodam do captcha.php to przestaje działać i wolał bym mieć captcha przy formularzu do rejestracji a nie na oddzielnej stronie, troche dziwinie by to wyglądało.

Ten post edytował michal16202 31.05.2014, 11:46:07
Go to the top of the page
+Quote Post
kartin
post
Post #4





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

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


Nic nie trzeba kombinować, będzie działać w formularzu rejestracji. Przecież nie będziesz sprawdzać kodu przed jego wygenerowaniem, a dopiero po, gdy użytkownik kliknie zarejestruj.

Swoją droga captcha jest tylko utrudnieniem dla zwykłych użytkowników - jak ktoś będzie chciał masowo rejestrować konta to skorzysta z odpowiednich serwisów: 8 Best CAPTCHA Solvers

Ten post edytował kartin 31.05.2014, 13:36:41


--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post
michal16202
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.05.2014

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


Moi "klienci" raczej nie będą się uciekać do tych metod a captch jest mi potrzebne bo chociaż w jakimś stopniu by blokowały spam, nie da się tego jakoś rozwiązać żeby obrazek było widać w formularzu tak żeby działał? I mam pytnie, dla czego się tak dzieje że obrazek jest niezgodny z wyświetlanym a z czym idzie wymaganym do sprawdzenia captch kodem?
Go to the top of the page
+Quote Post
kartin
post
Post #6





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

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


Próbowałeś wstawić w formularzu i nie działa? Captcha jest OK i będzie działać poprawnie z formularzem rejestracji.

  1. <?php
  2. echo $_SESSION['captcha'];
  3. ?>
  4. <img src="/captcha.php" />


Powyższy kod działa w następujący sposób:
  1. wyświetl zapisany wcześniej kod
  2. wygeneruj i zapisz kod, wyświetl obrazek z kodem

Krok pierwszy wykonywany jest w chwili uruchomienia skryptu, a krok drugi w momencie pobrania obrazka (uruchomienia skryptu captcha.php) przez przeglądarkę. Zanim nie wyświetlisz obrazka to nie możesz ze zmiennej sesji odczytać kodu.


--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post
acidm
post
Post #7





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

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


Cytat(michal16202 @ 31.05.2014, 16:05:29 ) *
captch jest mi potrzebne bo chociaż w jakimś stopniu by blokowały spam...

Polecam link
Go to the top of the page
+Quote Post
michal16202
post
Post #8





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.05.2014

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


Już wiem czemu mi to nie działało, captcha jest generowane z dużych liter i takie musze wpisać w polu a wpisywałem małe i dlatego nie działało. Problem rozwiązany. Dzięki.

Ten post edytował michal16202 1.06.2014, 05:45:45
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 07:34