![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 13.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam następujący problem - chcę umieścić obiekt klasy admin z polami LOGIN, MAIL, ID, TYPE, COMMENT w sesji. Kod tworzacy i zapisujacy obiekt wyglada standardowo: Kod $newadmin = new admin($row['id'], $row['login'], $row['e_mail'], $row['type'], $row['comment']); $_SESSION['user'] = $newadmin; header("Location:index2.php"); Po przejsciu do index2.php wywolanie Kod print($_SESSION['user']->LOGIN); nie daje zadnego rezultatu a wywolanie: Kod print_r($_SESSION); wyświetla: Array ( [user] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => admin [ID] => 1 [LOGIN] => aaa [MAIL] => aaa@a [TYPE] => A [DESCR] => aaaaaaaa ) ) Ponoć jedną z metod rozwiązania tego jest zserializowanie obiektu przed zapisaniem go do $_SESSION.... i odserializowanie go po odczytaniu z $_SESSION... na innej stronie. Czy zna ktoś jakies inne rozwiązanie? bez serializacji, żeby można bylo normalnie zapisywać w $_SESSION obiekt? Z góry dzięki za odpowiedzi. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ponoć jedną z metod rozwiązania tego jest zserializowanie obiektu przed zapisaniem go do $_SESSION.... i odserializowanie go po odczytaniu z $_SESSION... na innej stronie. Wlasnie po to wymyslono serializacje. -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 13.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
I nie ma żadnego innego rozwiazania na to?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Czy to co napisałem jest niezrozumiałe ?
-------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 13.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jest zrozumiałe.
A moje pytanie jest niezrozumiałe? Serializowanie wyglada troche sztucznie, bardziej naturalne byloby zapisywanie obiektu... ale ok. Ten post edytował Milczar 13.12.2005, 15:21:51 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
A definicje klasy masz przed odserializowaniem (wczytaniem sesji -- session_start())?
Zapisanie sesji polega na serializacji tablicy $_SESSION i zapisania stringa w bazie czy pliku. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 13.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Definicje klasy dołaczam z osobnego pliku (require_once)...
//otwieram sesje session_start(); //dolaczam regiure_once(......); i pozniej sprawdzam min. czy w zeminnych sesyjnych $_SESSION jest moj obiekt. i to wszystko jest ok - jest ustawiony, a odczytuje go takjak podalem na poczatku tematu. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Definicje klasy musisz miec PRZED odczytem sesji.
Sesja jest odczytywana (wypelniana tablica $_SESSION) za pomoca session_start(). a print_r( $_SESSION[ 'obiekt' ] ); to tylko skorzystanie z ODCZYTANEJ JUZ sesji. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 13.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
OK, dziala.
Najpierw dolaczylem plik z klasa, pozniej otworzylem sesje. Bledow typu 'header already sent' pozbylem sie stosujac buforowanie... czyli: ---------------------- <?php ob_start(); require_once(...); session_start(); ob_end_flush() //i dalej caly kod z wykorzystaniem obiektu zapisanego w $_SESSION - dziala bez problemu. ?> ---------------------- Odwolania typu print($_SESSION['user']->LOGIN); $_SESSION['user']->test() czy print_r($_SESSION); dzialaja prawidłowo. Dzieki! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 05:19 |