![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 118 Pomógł: 3 Dołączył: 6.07.2006 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
Cóż - może jestem już zmęczony, może popełniłem jakiś oczywisty błąd, a może po prostu o czymś nie wiem. Tak czy siak nie działa mi kod tego rodzaju (kod uprościłem do postaci przedstawiającej esencje problemu):
Dlaczego obiekt tworzony jest wciąż na nowo? Sprawdziłem – sesja uruchomiona jest prawidłowo, parser nie zgłasza błędów. Może ktoś mnie oświeci? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
bo sesje sie staruje na poczatku skryptu a nie w konstruktorze
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 118 Pomógł: 3 Dołączył: 6.07.2006 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
bo sesje sie staruje na poczatku skryptu a nie w konstruktorze A gdzie to jest powiedziane? Sesja powinna byś otwarta przed wysłaniem nagłówka. -------------------- -----------------------
My hovercraft is full of eels! |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Tego sie nie mowi glosno. To wyplywa z logiki
![]() Zastanow sie. Teraz w skrypcie na poczatku sprawdzasz czy istniejesz obiekt w sesji. Jest tylko maly problem.... sesja nie zostala jeszcze wystartowana, wiec w sesji nic nie ma (wogole sesji nie ma). Wiec logicznie rzecz biarac, zeby sprawdzic cos w sesji, trzeba najpierw ja wystartowac ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 118 Pomógł: 3 Dołączył: 6.07.2006 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
Tego sie nie mowi glosno. To wyplywa z logiki ![]() Zastanow sie. Teraz w skrypcie na poczatku sprawdzasz czy istniejesz obiekt w sesji. Jest tylko maly problem.... sesja nie zostala jeszcze wystartowana, wiec w sesji nic nie ma (wogole sesji nie ma). Wiec logicznie rzecz biarac, zeby sprawdzic cos w sesji, trzeba najpierw ja wystartowac ![]() Tak na logike to mi to właśnie powinno działać. Po kroku: sesja nie istnieje, nie istnieje wiec obiekt - otrzymujemy false. Sprawdzamy zawartość pola w tablicy. Przecież jeśli nie istnieje pole o danym indeksie lub sama tablica otrzymujemy fałsz.
Skoro otrzymujemy false tworzony jest obiekt, w którym otwierana jest sesja. Sesja tworzona jest prawidłowo.
Jeśli mamy już sesję zapisujemy do niej utworzony obiekt:
Od tej pory mamy sesję i obiekt w niej zapisany, kolejne wywołanie;
powinno zwrócić true Gdzie leży błąd w tej logice? -------------------- -----------------------
My hovercraft is full of eels! |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Blad w tej logice jest taki, ze nie wiesz jak sie uzywa sesji w php. Jesli chcesz uzywac sesji, to session_start zawssze musi byc na poczatku skryptu, inaczej sesja wogole ci nie wystartuje, nawet pomimo tego iz poprzednim razem ci wystartowala w konstruktorze.
Uzywasz sesji - session_start() ma byc zawsze!!! -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 118 Pomógł: 3 Dołączył: 6.07.2006 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
Blad w tej logice jest taki, ze nie wiesz jak sie uzywa sesji w php. Jesli chcesz uzywac sesji, to session_start zawssze musi byc na poczatku skryptu, inaczej sesja wogole ci nie wystartuje, nawet pomimo tego iz poprzednim razem ci wystartowala w konstruktorze. Uzywasz sesji - session_start() ma byc zawsze!!! Chętnie bym Ci przyznał rację i miał święty spokój. Zrobiłem jednak eksperyment, który jak myślę udawania, że nie masz racji. Dlaczego poniższy kod działa zgodnie z oczekiwaniem a ten przedstawiłem na początku nie?
Nigdzie nie doczytałem się też, że session_start ma się znajdować na samym początku. Z całą pewnością sesja musi zostać otwarta zanim wyślemy cokolwiek do przeglądarki ale nie na samym początku. -------------------- -----------------------
My hovercraft is full of eels! |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
ten przyklad co pokazales wlasnie udowadnia ze mam racje
![]() Z mojej strony to tyle, reszta pozostawiam tobie. Przemysl sobie jeszcze raz wszystko pomalutku edit: mowiac na poczatku skryptu, mam na mysli przed jakim kolwiek odwolaniem do $_SESSION. A skoro skrypt ma uzywac sesji to z reguly daje sie to na poczatku by se glowy nie zawracac pozniej w kodzie. Co nie zmienia faktu ze Twoj pierwszy skrypt mial session_start juz po odwolaniu do $_SESSION przez co nie mial prawa dzialac poprawnie -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 118 Pomógł: 3 Dołączył: 6.07.2006 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
faktycznie - kumam, thx
![]() -------------------- -----------------------
My hovercraft is full of eels! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.08.2025 - 03:33 |