![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 12.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie,
Jestem w trakcie tworzenia projektu ktory wymaga logowania uzytkownika, lecz napotkalem sie na pewien problem. Moja strona opiera sie na krótkim kodzie zawartym w index.php:
Tutaj tworze rowniez wskaznik na obiekt klasy logIn (o ktorej za moment) - $curUser, ktory posiada takie metody jak walidacja formularza, walidacja uzytkownika i prywatne pola. W momencie kiedy uzytkownik poprawnie wypelni formularz logowania zaladowany przez zmienna $page dane wchodza do metody getPostData($u,$p), ona przepuszcza wartosci przez real_escape_string() i zapisuje w polach klasy
Nastepnie metoda validateUser() sprawdza czy taki uzytkownik istnieje i ... ogolnie mowiac przeprowadza proces logowania, ktorego wynikiem jest:
oraz uzupelnienie pozostalych informacji o uzytkowniku:
Proces logowanie w metodzie validateUser() opiera sie na wartosci pol klasy takie jak wlasnie $this->username, $this->userBrow etc. Metoda ta otrzymuje te wartosci prawidlowo (nie sa puste). To teraz pyatnie za 100 punktów: Dlaczego metoda logOut() - i nie tylko ona - kiedy probuje pobrac wartosci z pol klasy otrzymuje w zamian pusta zmienna? Przeciez to jest wszystko w obrebie tej samej klasy logIn, jedna metoda czyta wartosci prawidlowo a druga nie? Dodam ze na calej stronie uzywam jednego obiektu klasy logIn. metoda logout i pusta zmienna $this->sessionHash.
Probowalem wyswietlic kazde pole klasy i kazde jest zwracane puste. Nie mam pojecia gdzie lezy problem. Dla przejrzystosci fragment klasy logIn:
Jezeli cos nie jest jasne, prosze o pytania - chetnie zalacze inne fragmenty kodu lub cos objasnie, bo moglem to wytlumaczyc zbyt zawile. Przepraszam za brak polskich znakow, lecz nie mam polskiej klawiatury na komputerze. Dziekuje. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No ale przecież logowania i wylogowania zapewne nie robisz w czasie tego samego jednego żądania? Logiczne więc, że skoro podczas jednego żądania ustawisz wartość jakiejś zmiennej to podczas drugiego żądania zmienna ta nie jest ustawiona dopóki ponownie tego nie zrobisz.
Jak chcesz przenosić dane między żądaniami to musisz używać sesji. Przenosze, bo problem z obiektówką nie ma związku. -------------------- "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: 5 Pomógł: 0 Dołączył: 12.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
To nie powinno dzialac w ten sposob, ze dany obiekt w momencie przypisania wartosci do pol ma je caly czas? Nie zmieniam obiektu, nie tworze nowego wskaznika, ktory na nowo by wymagal przypisania wartosci, tylko uzywam caly czas tego samego.
Dlaczego maja sie one wyzerowac? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ale przeczytałeś co napisałem?
Zmienna/obiekt między kolejnymi żądaniami traci swoją wartość. Jak nie ustawisz to nie ma. Jak chcesz przenosić wartości zmiennych/obiektów między żądaniami to masz używać sesji. Koniec kropka -------------------- "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: 5 Pomógł: 0 Dołączył: 12.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Świetnie. Po malych przerobkach kodu na sesje wszystko smiga. Dziekuje za klarowne objasnienie.
Pozdrawiam ze slonecznej Anglii |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:08 |