![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 11.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Tak jak w temacie. Używam frameworka Zend'a i poznaję go już coraz bardziej. Zastanawiam się, czy jest możliwe jednorazowe wykonanie pewnego kodu. Spróbuję to jakoś przedstawić.
W pliku Bootstrap.php w katalogu scripts mam np. taki kod
Teraz po pierwszym wejściu na jakąś stronę np /public/logowanie ten kod wykona się jeden raz. Po przejściu na /public/rejestracja wykona się już po raz drugi. Chodzi mi właśnie o to, żeby ten kod wykonywał się tylko raz np. po pierwszym wejściu na jakąś podstronę -> Wchodzę na /public/logowanie (pierwsze wejście), kod się wykona -> potem wchodzę na /public/rejestracja (drugie wejście) i ten kod już się nie wykona. Czy to jest jakoś możliwe? Jeżeli tak, to w jaki sposób to można zrealizować (oprócz sprawdzania np. ifem)? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Acl się serializuje serialize i zapisuje w jakimś cache albo pliku. Przy następnym otwarciu strony po prostu pobierz go stamtąd gdzie został zapisany i deserializujesz unserialize.
Niestety zendowski ACL jest strasznie słaby (a niechże urośni Ci lista zasobów + ról to powstanie Ci niezła kupa w pamięci do wykonania "jednej" operacji) aczkolwiek jeżeli nie wymyślisz nic lepszego to już przy nim zostań. -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Alternatywnie możesz sprawdzać czy w rejestrze jest już ustawiona wartość klucza 'acl' i tylko w przypadku, jeśli nie jest, to wykonujesz przedstawiony przez Ciebie kod. Pamiętaj jednak, żeby przy wylogowaniu użytkownika usunąć tę wartość z rejestru. Mam na myśli coś takiego:
-------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 11.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Z tym ACL to był tylko przykład. Chodzi mi właśnie o to, żeby tego ACL'a i innych rzeczy nie ładować za każdym razem (rzeczy które są w Bootstrapie.php). Czyli żeby np. tego też nie ładować za każdym razem (chyba, że trzeba?):
darko - właśnie myślałem nad tym pomysłem, tylko jak będę więcej rzeczy tutaj ładował to potem będzie sporo ifów i nie wiem jak to bardzo wpłynie na wydajność wszystkiego. Dlatego na razie szukam jakiegoś innego sposobu. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Przeczytaj początek tego tekstu, to jest oficjalna dokumentacja, z której możemy przeczytać, że obsługa przechowywania "list dostępu" należy do dewelopera, a obiekt Zend_Acl umożliwia serializowanie (jak już wspomniał wookieb) i przechowywanie w dowolnej postaci czy to w bazie czy w pliku czy w cacheu. Osobiście nie przejmowałbym się problemem narzutu czasowego na każdym żądaniu; danych dużo nie ma, a sam mechanizm powinien działać właśnie tak, że przy każdej próbie dostępu danej roli do określonego na liście zasobu następuje sprawdzenie czy ta rola ma uprawnienia czy ich nie ma.
-------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 06:34 |