![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 17 Dołączył: 13.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jak mogę sprawdzić czy kod podany przez usera, jest zgodny z tym co ma w obrazku. Mam plik captcha.php i wyświetla on grafikę captchową. Ale jak próbuję dorzucić tam formularz, który by sprawdzał poprawność to nie da rady, ponieważ zdefiniowane mam tam:
Co odbiera mi możliwość wprowadzenia tam formularza. Próbowałem z sesją. Dodałem na końcu captcha.php coś takiego:
A potem w pliku test.php:
Ale to nic nie daje...Jeśli w pliku captcha.php mam:
To wyświetla mi w test.php TYLKO grafikę (captchę), bez tego echa. Z kolei jeśli tej linijki nie mam to wyrzuca mi błąd: Kod Obrazek „http://test.pl/test.php” nie może zostać wyświetlony, ponieważ zawiera błędy. Jak to mogę sprawdzić? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 14.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Ten sposób jest ekstremalnie zawodny... Wystarczy, że ktoś otworzy dwie karty przeglądarki i zostanie odrzucony dobry kod (bo wygenerowano w międzyczasie nowy).
Moje 2 propozycje: Albo użyć gotowego rozwiązania (np. reCaptcha, czy jakoś tak), albo... W danych sesji stworzyć tablicę. Za każdym razem gdy tworzysz formularz z obrazkiem do przepisania robisz następujące rzeczy: generujesz ciąg do przepisania, tworzysz mu unikatową sygnaturę (np. dodaj na końcu czas i potraktuj go funkcją hashującą), dopisujesz do tablicy w sesji ( $_SESSION['tablica'][$sygnatura] = $tekst_do_przepisania; ). Dodajesz do formularza ukryte pole z sygnaturą. Dodajesz obrazek podając sygnaturę jako parametr (skrypt generuje obrazek w oparciu o tekst zapisany w sesji). Bezwzględnie po każdej próbie (udanej czy nie) kasujesz kod z tablicy w sesji. Nie jest to doskonałe, ale mniej podatne niż poprzednie proponowane. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 13:16 |