Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] Zend_Session_Namespace::setExpirationHops
Forum PHP.pl > Forum > PHP > Frameworki
sel
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.
pgrzelka
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.
sel
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:)
chlebik
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 smile.gif )
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.