![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 22.08.2007 Skąd: Gdańsk / Chełmno Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam taki problem: Buduje sklep a konkretnie składanie zamówienia. Chciał bym zrobić tak, że pierwszy ekran po kliknięciu w "Składam zamówienie" to strona z formularzem logowania oraz rejestracji. Chciał bym Aby po zalogowaniu / rejestracji system przerzucił mnie na strone z formularzem składania zamówienia - czyli nie standardowo na np. "/" tylko gdzie indiziej. Robie tak: W "Składam zamówienie": Kod $orderNS = new Zend_Session_Namespace('order'); $orderNS->setExpirationHops(1); $orderNS->wantToOrder = true; Widok tej akcji wygląda mniej więcej tak: Kod <?php echo $this->action('index', 'login'); ?> <?php echo $this->action('register', 'user'); ?> Dalej w akcji /login/index robie w ten sposób: Kod require_once 'Zend/Session/Namespace.php'; $orderNS = new Zend_Session_Namespace('order'); if( $orderNS->wantToOrder !== null ) { print 'ustawiam NS'; $orderNS = new Zend_Session_Namespace('order'); $orderNS->setExpirationHops(1); $orderNS->wantToOrder = true; } No i po kliknięciu w zaloguj i przejsciu na akcje /login/login Kod require_once 'Zend/Session/Namespace.php'; $orderNS = new Zend_Session_Namespace('order'); Zend_Debug::dump($orderNS->wantToOrder); Wynikiem jest NULL Chciał bym aby w każdym kroku rejestracji / logowania jeśli jest coś w Zend_Session_Namespace('order') to przedłużyć sesję o jeszcze jednego "Hopsa" i w odpowiednim momencie przekierować na formularz skłądania zamówienia. Problem polega na tym, że gdy użyje metody setExpirationHops raz i strona się przeładuje to następnym razem mimo iż ustawie hopsy na 1 to namespace pamięta, że strona raz się już przeładowała a ja nie wiem jak długo użytkownikowi zajmie logowanie = na ile ustawiac hopsy w kazdym z kroków - użytkownik może przecież pomylić się niejednokrotnie przy logowaniu. Proszę o pomoc. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 313 Pomógł: 24 Dołączył: 9.08.2008 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
wydaje mi się że trochę za bardzo przekombinowałeś
w pierwszym kroku gdy skrypt wykryje że osoba jest niezalogowana powinieneś w sesji ustawić zmienną 'back_url' z adresem na który powinien skrypt powrócić po zalogowaniu, potem przekierowujesz do formularza logowania, i po poprawnym zalogowaniu sprawdzasz czy w zmiennych sesji jest 'back_url', jeśli tak to przekierowujesz na ten adres. -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 22.08.2007 Skąd: Gdańsk / Chełmno Ostrzeżenie: (0%) ![]() ![]() |
Bałem się sytuacji w której w sesji zostanie zmienna back_url (np.: pomyłkowe kliknięcie w "Składam zamówienie" / zmiana zdania / sesja z wczoraj) a użytkownikowi w trakcie robienia zaków zechce się zalogować ale nie po to żeby składać zamówienie.
To jednak abstrakcyjna sytuacja. Jeśli się zdarzy to bardzo żadko. Dzięki za naprostowanie:) |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 113 Pomógł: 5 Dołączył: 12.09.2006 Skąd: Pruszków/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No i najlepiej zrob to w formie pluginu do front controllera - to sobie bedziesz mogl przekierowywac w ogole przed rozpoczeciem dispacha(u) (nie wiem jak to spolszczyc
![]() -------------------- "Człowiek dążący do swego celu może być skuteczny tylko w przypadku, jeśli każdą minutę swego życia wykorzysta z maksymalną korzyścią dla osiągnięcia zaplanowanego celu. Jeśli stworzył dla siebie system kar i karze sam siebie za każdą zmarnowaną minutę. Człowiekowi w zupełności wystarczą 3-4 godziny snu, cały pozostały czas może być wykorzystany dla osiągnięcia upragnionego celu." -- Wiktor Suworow
Java devBlog KulturalnyChlebik |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 9.08.2025 - 15:28 |