![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Witam mam taki glupi problem oto maja taki kod:
http://pyp.net.pl/source/4f1ad742429ff No i o ile pokazuje nam ze token wygenerowany i wpisany w html jako pole hidden jest taki sam jak ten z sesji przed wyslaniem formularza, to juz po wyslaniu formularza ten z $_POST['token'] zmienia. Problem banalny ale stwarza mi wiecej problemow niz te bardziej skomplikowane. Tutaj mozna sobie zobaczyc http://marcio.ekmll.com/formbuilider/index...news&id=301 login: ebreo pass: qwerty Ten post edytował marcio 21.01.2012, 16:18:29 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 12 Dołączył: 23.11.2006 Skąd: WL Ostrzeżenie: (0%) ![]() ![]() |
Ty wogóle nie przekazujesz nigdzie tokena.
Żadnego inputa nie ma. Mam nadzieje że o to ci chodzi. Pozdrawiam. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
@szmerak: Jak to nie ma?
@marcio: Zastanów się, czy w dobrym miejscu generujesz token. Zauważ, że w tej chwili każde przeładowanie strony (czy to odświeżenie, czy zatwierdzenie formularza) powoduje wykonanie tej linijki kodu:
Natomiast sprawdzenie formularza następuje później i zawsze. Algorytm powinien być raczej inny: 1. sprawdź, czy zatwierdzono formularz, jeśli tak to 2, jeśli nie to 5 2. sprawdź czy csrf się zgadza, jeśli tak to 3, jesli nie to 4, 3. update, powrót do poprzedniej strony 4. wyświetl błędy, idź do 5 5. wygeneruj csrf i wyświetl formularz To w dużym uproszczeniu. EDIT: Zapomniałem o jeszcze jednej ważnej kwestii. Chodzi o to, czym mianowicie jest $this->security, bo mogę jedynie zgadywać. W każdym bądź razie istotnym jest, aby ten obiekt (bo chyba to jest obiekt) przechowywał wygenerowany token np. w sesji czy w bazie danych. Mam nadzieję, że to robi, bo inaczej to nie mamy o czym rozmawiać (IMG:style_emoticons/default/wink.gif) Ten post edytował mortus 21.01.2012, 22:26:15 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Ty wogóle nie przekazujesz nigdzie tokena. Żadnego inputa nie ma. Mam nadzieje że o to ci chodzi. Pozdrawiam. Tak jak napisal @mortus prosze najpierw dobrze sprawdzic i pozniej ewentualnie wyciagac wnioski. @mortus masz racje ze generowanie powinno byc w czasie wysylania formularza bo tak jak mowisz token w moim przypadku bedzie generowal sie x2, w czasie ladowania formularza i w czasie jego wyslania zgadzam sie. Ale wtedy musze recznie ustawic token jesli mam go uzyc po wyslaniu formy, nie moge uzyc pola typu hidden do formularza bo formularz jest wyswietlany 1 raz przed jego wyslalniem potem nie tworze juz formularza. Czyli mam:
A dopiero potem:
Czyli musze to zrobic bez niewidocznego pola. Cytat EDIT: Zapomniałem o jeszcze jednej ważnej kwestii. Chodzi o to, czym mianowicie jest $this->security, bo mogę jedynie zgadywać. W każdym bądź razie istotnym jest, aby ten obiekt (bo chyba to jest obiekt) przechowywał wygenerowany token np. w sesji czy w bazie danych. Mam nadzieję, że to robi, bo inaczej to nie mamy o czym rozmawiać Pewnie to jest oczywiste (IMG:style_emoticons/default/wink.gif)
Dzieki za odp. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Może źle się wcześniej wyraziłem, albo źle zinterpretowałeś moją wypowiedź. Schemat ogólny:
Po prostu musisz najpierw sprawdzić, czy formularz już został zatwierdzony i czy został prawidłowo wypełniony, a jeśli nie to wyświetlić formularz i ewentualne błędy. Musisz tylko zmienić kolejność działań. EDIT: To co masz przed instrukcją warunkową (linie 8-23 włącznie) przenieś przed (linia 80)
i powinno działać. Ten post edytował mortus 22.01.2012, 13:44:01 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
potem cos zdzialam na dniach mam malo czasu, jak juz poprawie dam znac ;]
EDIT: Wystarczylo zrobic:
I juz nie generuje tokena x2 ;p glupie pytanie i jeszcze glupsze rozwiazanie (IMG:style_emoticons/default/snitch.gif) Ten post edytował marcio 22.01.2012, 14:55:44 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 06:20 |