Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: zend_form i Zend_Form_Element_Hash

Witam,


mam problem z zend_form i elementem Zend_Form_Element_Hash,
a mianowicie tworze sobie formularz w którym jest pole:


$csrf = new Zend_Form_Element_Hash('csrf');
$csrf->setSalt('unique')->setIgnore(true);

...
...

$this->addElement($csrf);
$this->addDisplayGroup(array('csrf', 'email', 'password', 'rememberMe'), 'signinFld');


niby wszystko jest oke, ale gdy dochodzi do sprawdzenia formularza:

if ($form->isValid($data)){
...
}


wywala mi błąd dla pola csrf "notSame"
Moje pytanie, czym może być to spowodowane?
Jarosław Grzelak

Jarosław Grzelak Software Engineer,
StepStone Services
Sp. z o.o.

Temat: zend_form i Zend_Form_Element_Hash

- Nie używasz tutaj przypadkiem Ajaxa?
- Pamiętaj, że hash jest poprawny tylko dla następnego requestu (chyba, że zmieniłeś ustawienia standardowe). Może masz tam redirecta jakiegoś?
- Ostatnią opcją są dwa formularze tego samego zend_form-a z tym samym csrf-em i kolidujące ze sobą.Jarosław Grzelak edytował(a) ten post dnia 06.03.11 o godzinie 20:56
Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: zend_form i Zend_Form_Element_Hash

Witaj, dzięki za wskazówki, jedyną opcją może być wskazówka nr 2 gdyż nie do końca wiem jak to może być spowodowane.

otóż mój kontroler jest ma standardowy mega prosty kod:


public function signinAction()
{
$form = new Form_Signin();

if ($this->_request->isPost())
{
$data = $this->_request->getPost();

if ($form->isValid($data))
{
echo 'super działa';
}
else
{
echo 'niestety :(';
}
} $this->view->signinForm = $form;
}


i cały czas mam napis "niestety :(".
Nie mam ajaxów, ani kilku formularzy. Jakiś pomysł by sprawdzić czy dobrze idą requesty lub jak rozwiązać mój problem?
Bartosz Ratajczyk

Bartosz Ratajczyk MS SQL Developer

Temat: zend_form i Zend_Form_Element_Hash

A jak ustawienia sesji?

"Internally, the element stores a unique identifier using Zend_Session_Namespace, and checks for it at submission (checking that the TTL has not expired). The 'Identical' validator is then used to ensure the submitted hash matches the stored hash. "
Jarosław Grzelak

Jarosław Grzelak Software Engineer,
StepStone Services
Sp. z o.o.

Temat: zend_form i Zend_Form_Element_Hash

Bartosz Ratajczyk:
A jak ustawienia sesji?

"Internally, the element stores a unique identifier using Zend_Session_Namespace, and checks for it at submission (checking that the TTL has not expired). The 'Identical' validator is then used to ensure the submitted hash matches the stored hash. "

No właśnie, jeśli chodzi o debugowanie to niestety trzeba w zend-zie :/ Interesuje Ciebie walidator Zend_Validate_Identical metoda isValid.Jarosław Grzelak edytował(a) ten post dnia 08.03.11 o godzinie 11:31
Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: zend_form i Zend_Form_Element_Hash

Lekko odkopie temat, gdyż może się komuś przydać.
Jeśli w kodzie HTML, znajdzie się taki kod:

<img src="" alt="cos" />

to Zend_Validate_Identical będzie pokazywał wspomniany błąd.



Wyślij zaproszenie do