![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 75 Pomógł: 0 Dołączył: 12.10.2004 Ostrzeżenie: (10%) ![]() ![]() |
Witam,
szukam informacji na temat używania seji w Zend Framework, może ktoś gdzieś widział coś na ten temat, albo wie coś o tym więcej? Może jakiś tutorial z np. systemem logowania? Z góry wielkie dzięki Pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Zend samego w sobie machanizmu sesji nie ma. Nic nie stoi na przeszkodzie zeby uzywac $_SESSION. Przyklad mniej wiecej taki: 1. session_start() w index.php 2. Akcja Logowanie: - sprawdz czy istnieje uzytkownik w bazie (haslo i login poprawne) - $_SESSION['zalogowany'] = true; I juz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Bardzo proste i bardzo nieladne. Napisalem (moim zdaniem) bardzo ciekawy mechanimz obslugi sesji. Założenia Framework udostępnia klasę Rapide_Session do obsługi sesji.
Klasa Rapide_Session jest we frameworku, ale w zasadzie skorzystac z niej powinien tylko sam framework (programista uzyje innej klasy). Programista ma do uzytku klase Rapide_User
Kiedy programista chce zapisac dane w sesji, pisze:
Ponadto klasa Rapide_User dostarcza metod dajacych mozliwosc kontrole bezpieczenstwa w aplikacji. Po zalogowaniu sie nalezy zrobic:
Pozniej w aby sprawdzic czy uzytkownik zostal zalogowany:
Przepraszam, ze post napisany na szybko, ale nie mam duzo czasu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Moze pozniej przedstawie lepszy opis i uzycie. Pozdrawiam, Adrian. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 75 Pomógł: 0 Dołączył: 12.10.2004 Ostrzeżenie: (10%) ![]() ![]() |
wielkie dzięki,
Mam jeszcze takie pytanie (ad. sposobu z $_SESSION): jesli tak zrobie to musze w każdej akcji w każdym kontrolerze sprawdzać czy użytkownik jest zalogowany (wpisująć odpowiednią ściazke może sie dostać gdzie nie powinien), a ja chciałbym tego uniknąć. Jakiś pomysł? PS Twój pomysł obsługi sesji poprzez klasy frameworka napewno przeanalizuje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
[ot]@Prph to wszystko przypomina mi Mojavi.. (poza handlerem)[/ot]
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
@Splatch : Haha, po czesci jest to rozwiazanie z mojavi. W zasadzie jedynie obecnosc klasu User, bo cala reszta raczej na byla wzorowana na mojavi. Nie wiem jak jest z najnowszym mojawi ale chyba jeszcze w 3.0 bylo nieco inaczej. W kazdym bardz razie, widac rozwiazanie calkiem dobre (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
@1maciek: Nie musisz w kazdej akcji sprawdzac czy uzytkownij jest zalogowany. Od tego sa pluginy. Akurat pluginy w Zend Frameworku uwazam ze sa bardzo, ale to bardzo dobrze przemyslane i ze sa duzo lepsze od tych z mojavi/symphony. Zerknij do dokumentacji. Jak dobrze pamietam, we Front Controlerze mozna zdefiniowac PluginManagera czy jakos tak. W dokumentacji jest to opisane. Pluginy posiadaja bodajze 4 metody, ktore uruchamiane sa w odpowiedniej chwili w czasie wykonywania dispathcingu (pracy dispatchera). Rozwiazanie to tak bardzo mi sie spodobalo, ze wykorzystalem je w swoim frameworku. Przyklad:
Na bazie tej abstrakcyjnej klasy mozna szybko zbudowac wlasne pluginy, miedzy innymi do bezpieczenstwa:
W efekcie na ekranie pojawi sie strona z error 403, zamiast np. dodaj newsa. Oczywiscie zeby to wszystko mialo jakies swoje zastosowanie, nalezy zrobic pliki konfiguracyjne, zeby framework wiedzial, ktore akcjie wymagaja logowania, a ktore nie. Pozdrawiam, Adrian. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 75 Pomógł: 0 Dołączył: 12.10.2004 Ostrzeżenie: (10%) ![]() ![]() |
OK, fajnie a gdzie (fizycznie) umieścić klasę implementującą plugin, żeby dispatcher z niej korzystał? - ok z tym jakoś dałem sobie rade (chociaż chętnie zobacze jak powinno być to zrobione fachowo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ), ale wywala mi taki błąd
Cytat Fatal error: Declaration of LoginControl::preDispatch() must be compatible with that of Zend_Controller_Plugin_Interface::preDispatch() in C:\xampp\xampp\htdocs\auth\library\LoginControl.php on line 2 a kod wygląda tak
include path mam ustawiona na katalog /library/ tam mam też LoginControl.php Ten post edytował 1maciek 26.08.2006, 14:58:38 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam,
W dokumentacji Zenda masz gdzie powinienes umieszczac swoje wlasne klasy, ktore budujesz z wykorzystaiem klas Zenda. Strzelam, ze jest to np: MojaAplikacja_Plugin_LoginControl, wiec powinienes umiescic to w katalogu z plikiem Zend.php w katalogu MojaAplikacja/Plugin/LoginControl.php. Wtedy mozesz zrobic zaladowanie plaginu przez Zend::loadClass('MojaAplikacja_Plugin_LoginControl'); Nie jestem tego pewien, poniewaz nie uzywam Zenda. Wiem o nim troche, bo pod wieloma wzgledami imponuje mi Zend Framework. Niebawem ukoncze swojego frameworka Rapide. Z racji, ze bardzo podoba mi sie prostota Zenda i organizacja plikow, moj framework implementuje i jedno i drugie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Wtedy moge podeslac Ci kod i zorientujesz sie jak to mniej wiecej wyglada w calosc. Zend Framework dostarcza solidnej platformy do zbudowania aplikacji, ale trzeba sie sporo nameczyc, zeby cos odpalic najmniejszym nakladem pracy. Rapide przede wszystkim poprawnie implementuje MVC. W ZF model jest, kontroler jest, ale widok jest mowiac krotko - nieporozumieniem. Programisci ZF albo wyszli z zalozenia ze i tak w aplikachach webowych prozentowana tresc to HTML, albo pomylilo im sie pojecie szablonow z widokiem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ponadto w Rapide zintegrowalem kontrole dostepu (ACL) z klasa User, wiec teraz wszystko chodzi zgrabnie, a co najwazniejsze - dziala. Adrian. |
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat W ZF model jest, kontroler jest, ale widok jest mowiac krotko - nieporozumieniem. Programisci ZF albo wyszli z zalozenia ze i tak w aplikachach webowych prozentowana tresc to HTML, albo pomylilo im sie pojecie szablonow z widokiem. Nic im się nie pomyliło. Po prostu uważają że kolejna warstwa jest zbędna bo php sam w sobie jest świetnym interpreterem szablonów. Ja się z nimi w całej rozciągłości zgadzam. Systemy szablonów z własną składnią to przerost formy - wystarczą wybrane mechanizmy szablonów (helpers, output filters, cache) i czysty php.Z dokumentacji Zend Framework: Cytat Zend_View is a class for working with the "view" portion of the model-view-controller pattern. That is, it exists to help keep the view script separate from the model and controller scripts. It provides a system of helpers, output filters, and variable escaping. Although php is itself a powerful template system, many developers feel it is too powerful or complex for their template designers. Zend_View is template system agnostic; you may use php as your template language, or create instances of other template systems and manipulate them within your view script. Przykład szablonu - jak dla mnie czytelne wystarczająco, nawet dla laika. |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
@dragossani: spagetti kod nie jest zbyt ciekawym rozwiązaniem. Mimo, że wydajnym.
W mojej ocenie łatwiej zarządzać i w ogóle odnaleźć się w systemie wzorców niż w przeplatanym kodzie HTML i php, gdzie osoby postronne mogą nie wiedzieć o przeznaczeniu wszystkich zmiennych. Dodatkowo jest ryzyko, że ktoś wywoła np delete() na danym modelu. Wzorce minimalizują to ryzyko i dają możliwość pewnego ujednolicenia tej warstwy. A co do templateów z użyciem ZF to ciekawe rozwiązanie zostało przedstawione na ZDZ: http://devzone.zend.com/node/view/id/120 Kod z posta jednak nie jest kompletny bo brakuje mu przeciążenia metody _script() - ale w komentarzach jest ona podana. |
|
|
![]()
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
To trochę akademicki spór i mam wrażenie, że może być go trudno rozstrzygnąć bo argumenty są w dużej mierze natury estetycznej, a jak wiadomo o gustach się nie dyskutuje. :roll2:
O spagetti kodzie mówi się raczej w kontekście całkowitego ignorowania podziału na szablon i kod. Tutaj mamy natomiast do czynienia ze świadomym użyciem składni php w konstrukcji szablonu. Nie po to by szablon był czymś więcej niż jest lecz po to by nie wymyślać koła na nowo. Rozumiem odruchowy wstręt do samego pojawienia się php w szablonie (przecież po to jest szablon żeby kodu php tu nie było!) ale to moim zdaniem kompulsywna reakcja, a nie wynik chłodnej kalkulacji. Przecież chodzi nam o uzyskanie określonego efektu, pewnej logicznie wyodrębnionej struktury, a nie na wymyśleniu nowego meta-języka. Smarty i inne systemy szablonów to niestety kolejne warstwy meta-języka, kolejna składnia do opanowania. php użyte w szablonach nie musi skutkować bałaganem w strukturze aplikacji. Osoby postronne faktycznie nie muszą wiedzieć o przeznaczeniu wszystkich zmiennych i dlatego widok w Zend Framework dostaje zmienne tak jak w Smarty i twórca szablonu operuje tylko na nich. Składnia php przy takim zakresie jaki potrzebny jest przy tworzeniu szablonów jest nieskomplikowana i sprawdza się w tej roli. |
|
|
![]()
Post
#11
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
W sumie racja. Wybor tych czy innych templateow glownie opiera sie o estetyke, ale nie mozna tez zapomniec, ze przeciez chocizaby smarty kompiluje kod do postaci php. Odchodzi nam wiec koniecznosc kazdorazowego otwierania i zamykania tagow php, a to oszczedza troche czasu przy projektowaniu wzorca.
No ale zgodze sie, ze jest to raczej kwestia gustow niz koniecznosci (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#12
|
|
Administrator wortalu Grupa: Przyjaciele php.pl Postów: 960 Pomógł: 39 Dołączył: 21.10.2003 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
No to już jest obsługa sesji (w inkubatorze). Jak na razie 0 dokumentacji. Ktoś może już coś na niej działał?
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 10:39 |