Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Obiekty][Sesje] Przekazywanie obiektu w sesji.
thornag
post
Post #1





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Witam mam maly problem z przekazaniem obiektu w sesji.

Do testow uzywam nastepujacego kodu
  1. <?php
  2.  
  3. require("db.class.php5");
  4.  
  5. if(!isset($_SESSION['s'])) {
  6. echo "nowy obiekt<br>";
  7. $_SESSION['s'] = New DB();
  8. } 
  9.  
  10. $s = unserialize($_SESSION['s']);
  11. $s->query("SELECT * FROM visits");
  12. echo "pobrane";
  13.  
  14. ?>


Pierwsze odswiezenie daje spodziewane rezultaty. Na ekranie widnieje napis nowy obiekt i pobrano.

Po odswiezeniu strony kiedy sesja jest juz zarejestrowana wystepuje :
Kod
Fatal error: Call to a member function query() on a non-object in /var/www/vhosts/myooch_test/1.php5 on line 12


Wczesniej wystepowaly tez bledy o serializacji. Przy kodzie :
  1. <?php
  2.  
  3. require("stat/db.class.php5");
  4.  
  5. if(!isset($_SESSION['s'])) {
  6. echo "nowy obiekt<br>";
  7. $_SESSION['s'] = New DB();
  8. } 
  9.  
  10. $_SESSION['s']->query("SELECT * FROM visits");
  11.  
  12. echo "pobrane";
  13.  
  14. ?>


Przy powyzszym kodzie mamy blad:
Kod
Fatal error: main() [<a href='function.main'>function.main</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition &quot;DB&quot; of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /var/www/vhosts/myooch_test/1.php5 on line 11


Kombinowalem z serializacja niestety nie pomagalo. Co do definicji klasy i sugesti przeciazenia funkcji __autoload, to przeciez definicja jest zaladowana komenda require (chyba ze zle pojmuje kwestie zaladowania definicji).

Jak przekazac obiekt w sesji?

P.S. probowalem przeszukac forum, na keywordy "przekazywanie obiektu w sesji" forum reaguje czerwonym ostrzezeniem ze szukana fraza jest za krotka albo uwywam niedozwolonych slow.

Ten post edytował thornag 11.08.2006, 14:01:00


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
legorek
post
Post #2





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $_SESSION['s'] = New DB();
  3. ?>


To Twój błąd. W ten sposób $_SESSION['s'] jest obiektem, który ty potem traktujesz unserialize.


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://pl.php.net/manual/pl/language.oop.serialization.php
I mi to jakos dziala winksmiley.jpg
Uzywam serializacji przy cacheowaniu obiektow


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
thornag
post
Post #4





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Zmienilem jak stalo w manualu

  1. <?php
  2.  
  3. require("stat/db.class.php5");
  4.  
  5. if(!isset($_SESSION['s'])) {
  6. echo "nowy obiekt<br>";
  7. $db = New DB();
  8. $_SESSION['s'] = serialize($db);
  9.  
  10. } 
  11.  
  12.  
  13.  
  14.  $a = unserialize($_SESSION['s']);
  15.  
  16.  $a->query("SELECT * FROM visits");
  17.  
  18.  
  19. ?>


Efekt
Kod
Fatal error: Call to a member function query() on a non-object in /var/www/vhosts/myooch_test/1.php5 on line 17


Pokusilem sie nawet o implode, wtedy zostalem powiadomiony o zlych parametrach dla implode. Wszak po co mi tak impolode ?

Probowalem tez wyprintowac unserialized($_SESSION['s']);

Zobaczylem(badz nie) pusty struing.

VarDump pokazal bool(false)

Ten post edytował thornag 11.08.2006, 14:20:02


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A wyczysciles se sesje od ostatnich prob? Moze masz smieci przez to smile.gif Bo ty do sesji walisz jesli nie ma s w sesji.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
thornag
post
Post #6





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


@nospor dwa slowa => No tak.


Dzieki za pomoc.


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 07:03