Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawdzanie poprawności wpisanego kodu - Captcha
Majkelo23
post
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:

  1. header('Content-Type: image/jpeg');


Co odbiera mi możliwość wprowadzenia tam formularza.
Próbowałem z sesją. Dodałem na końcu captcha.php coś takiego:

  1. $_SESSION['captcha'] = $tabb;



A potem w pliku test.php:

  1. <?php
  2. require_once('captcha.php');
  3. echo $_SESSION['captcha'];
  4. ?>


Ale to nic nie daje...Jeśli w pliku captcha.php mam:

  1. imagejpeg($background);


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ć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Orzeszekk
post
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

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


http://www.google.com/recaptcha

Oto rozwiązanie twoich problemów.

Jeżeli chcesz napisać kod który rozwiązuje jakiś problem, upewnij-się że twój kod będzie lepszy niż istniejące rozwiązania.
http://pl.wikipedia.org/wiki/Antywzorzec_projektowy
Odkrywanie kwadratowego koła (ang. Reinventing the square wheel) Rozwiązywanie problemu w zły sposób, podczas gdy istnieją skuteczne i sprawdzone rozwiązania. Na przykład tworzenie własnego systemu bazodanowego, zamiast wykorzystania istniejących darmowych rozwiązań, z dużym prawdopodobieństwem lepszych niż sami jesteśmy w stanie stworzyć.

Pisałem własną captche kiedyś, nie jest to robota na tydzień, ani na 2 tygodnie. A teraz i tak uzywam reCaptchy.
taką wlasna biblioteke trzeba debugowac, odpluskwiac, pielegnowac zeby byla uzyteczna, to bez sensu bo to odciaga od wlasciwego tworzenia aplikacji. Orobisz sie przy captchy, zabraknie ci sily na twoj portal. To jak skupic sie na produkcji kluczy bardziej niz na naprawach będąc mechanikiem samochodowym.

jesli chcesz by twoja captcha byla skuteczna, musi:
-generowac obrazki w locie
-litery znieksztalcac beczkowatym (lub innym nielinearnym) znieksztalceniem
-byc przystepna dla niewidomych
-byc w miarę czytelna dla ludzi
-trudna do zlamania przez boty
-poprawne odpowiedzi dla każdego zadania wrzucac do bazy danych a nie do jakiejś smiesznej sesji

do każdego zadania captchy generujesz token i wysyłasz go razem z formularzem na którym jest captcha, do bazy wpisujesz token i prawidlowe rozwiazanie zagadki, na koniec sprawdasz czy dla tego tokena rozwiazanie wpisane przez usera sie pokrywa z rozwiazaniem w bazie i hola. Dorzuc do tego jeszcze timestamp (i sprawdzaj czy ta captcha nie pochodzi z czasu pozniejszego niz np. 20 minut) i moze jakos tam to będzie działało.

proste captche ze statycznych obrazków, lub skladane dynamicznie ale bez zadnych przeksztalcen to kaszka manna dla botów, i taką captcha nie uchronisz strony od botów, a co najwyzej wk...isz ludzi. Weź skrypt re-captchy, sformatuj ją pod swoje potrzeby, mozesz kompletnie zmienic jej wygląd, jak np tu: Przykladowa recaptcha ze zmienionym wygladem i smiga...

PS. Sesja w PHP to jest akurat jedna z tych niewielu rzeczy, która jest do d...y i trzeba ten mechanizm sobie napisać samemu lub użyć innego gotowego, ale nie tego dostarczanego z PHP. Moze dobry framework załatwi sprawę? Obejrz sobie cakePHP, Kohanę, lub Symfony i wybierz cos dla siebie.

Ten post edytował Orzeszekk 3.03.2012, 00:21:06
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: 17.10.2025 - 13:56