To powiem tak, ja to widze w ten sposob (na przykladzie Cake):
Stworzylem sobie komponent Captcha, ktory implementuje w Kontrolerze.
Poniewaz captcha wystepuje w tym przypadku przy formularzu (dowolnym), wiec najpierw waliduje pola z formularza, a na koncu pole typu captcha, wyglada to mniejwiecej tak w modelu:
<?php
class Model extends AppModel
{
'rule' => array( 'userDefined', 'Model', 'captcha' ), // czyt. wlasna funkcja w modelu 'Model' metody 'captcha' 'message' => 'Niepoprawny kod!' ) );
function captcha( $check )
{
// tutaj chcialbym porownac $check (wartosc pola 'kod' z formularza)
// z zarejestrowanym w sesji kodem, chcialo by sie uzyc:
// $this -> Session -> read( 'captcha );
// dostep jest jednak z modelu zabroniony do sesji
if( $check == $wartosc_session )
{
return true;
}
else
{
return false;
}
}
}
?>
Uzyc w Modelu wbudowanej obslugi sesji nie moge. Zawsze jest rozwiazanie z uzyciem tablic $_SESSION ale to chyba nie tedy droga?
Wiec jak to rozwiazac?
Wydaje mi sie ze captcha poprostu powinna byc sprawdzana jak inne dane formularza, czyli w modelu...