Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Captcha problem
Forum PHP.pl > Forum > PHP
moonadam
Witam,

Mam taki problem z Captcha. Mianowicie generuje sobie losowe rownanie i chce zeby uzytkownik wpisal wynik tego rownania, do odpowiedniego pola w formularzu. Problem pojawia sie z porówniem wyniku wpisanego przez użytkownika z wynikiem Captcha. Po naciśnięciu przycisku "Sprawdz" wygenerowane zostanie nowe rownanie i automatycznie wynik wpisany przez użytkownika jest nieaktualny - przez co niemozliwe staje się sprawdzenie poprawności wyniku. Mysle że rozwiazanie jest banalne tylko że już dlugo dziś pracuje i mój umysł nie pracuje tak jak powinien ;-).

Poniżej zamieszczam kod.

Kod
<?php

require_once 'QuickForm.php';
require_once 'Text/CAPTCHA.php';

$form = new HTML_QuickForm('rejestracja');
$cap = Text_CAPTCHA::factory("Numeral");

$form->addElement('header', null, 'Captcha');

$cap->init();
$cap->freze();

$rownanie = $cap->getCAPTCHA();
$form->addElement('static', 'rownanie', $rownanie);
$form->addElement('text', 'wynik', 'Wynik:', null);
$form->addElement('submit', null, 'Sprawdz');

$wynik = htmlspecialchars($form->exportValue('wynik'));
$rozwiazanie = $cap->getPhrase();
echo "Wpisany wynik to: $wynik <br /> Rozwiazanie to: $rozwiazanie";
$form->display();
?>


Widze że nikt nie jest w stanie pomóc ;(
GrayHat
zapisuj sobie rownanie do sesji winksmiley.jpg
delfinium
IMHO za późno wstawiasz linię pobierającą równanie, bo dopiero po wygenerowaniu nowego. Nie znam tej klasy generującej kody ale spróbuj wcisnąć tę linię przed $rownanie = $cap->getCAPTCHA();
Ogólnie powinno wyglądać to tak:
  1. <?php
  2. require_once 'QuickForm.php';
  3. require_once 'Text/CAPTCHA.php';
  4.  
  5. $form = new HTML_QuickForm('rejestracja');
  6. $cap = Text_CAPTCHAfactory("Numeral");
  7.  
  8. $form->addElement('header', null, 'Captcha');
  9.  
  10. $cap->init();
  11. $cap->freze();
  12.  
  13. /*nie wiem czy to ma być tutaj czy przed init, zależy która metoda generuje nowe równanie */
  14. $rozwiazanie = $cap->getPhrase();
  15.  
  16. $rownanie = $cap->getCAPTCHA();
  17. $form->addElement('static', 'rownanie', $rownanie);
  18. $form->addElement('text', 'wynik', 'Wyni:', null);
  19. $form->addElement('submit', null, 'Sprawdz');
  20.  
  21. $wynik = htmlspecialchars($form->exportValue('wynik'));
  22.  
  23. echo "Wpisany wynik to: $wynik <br /> Rozwiazanie to: $rozwiazanie";
  24. $form->display();
  25. ?>
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.