Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sesja i obiekty php4
Forum PHP.pl > Forum > PHP
kamiseq
poczytalem sobie troche na ten temat i w ktoryms poscie dla php4 znalazlem.

musze uzyc serialize i un serialize zanim podstawie obiekt do $_SESSION["mojObiekt"]

tylko ze wywala mi blad:| "Call to a member function on a non-object" wiec cos zle doczytalem.

co robie
1) w index.php
include("php/_dir_class.inc");
include("php/_img_class.inc");
include("php/_manager_class.inc");
session_start();
if(!isset($_SESSION["session_on"]))
{
$_SESSION["session_on"] = true;
$o = new _TbManager();
$_SESSION["oTbmanager"] = serialize($o);
}

2) w innym pliku.php
$oTbmanager = unserialize($_SESSION["oTbmanager"]);
$oTbmanager->switchGal();

i wywala blad w momencie dostawania sie do metody obiektu

czy musze dolaczyc definicje klasy w kolejnym pliku php(wydaje mis ie ze nie)

troche glupieje juz.....sad.gif
nospor
Cytat
czy musze dolaczyc definicje klasy w kolejnym pliku php(wydaje mis ie ze nie)
Podaj mi choc jeden powod dla ktorego tak uwazasz.

A jak juz nic nie nie wymyslisz, to doczytaj podstawy w manualu:
http://www.php.net/manual/pl/language.oop.serialization.php

Popraw posta o bbcode!

ps: przenosze. z programowaniem obiektowym ma to sredni zwiazek
kamiseq
dobrze wiec poczytalem sobie
1) musze wszedzie dolaczyc definicje klasy
2)"Jeśli używasz sesji i session_register() do rejestracji obiektów, te obiekty są serializowane automatycznie na końcu każdej strony php i odserializowane automatycznie na każdej z następnych stron. Zasadniczo znaczy to, że te obiekty mogą pokazać się na dowolnej z twoich stron jeśli tylko staną się częścią twojej sesji."

czyli nie muze uzywac serialize i un-se. i jesli uzywam $_SESSION["nazwa"] to wszystko powinno byc ok. a dalej nie jest

wiec o co chodzi?

  1. <?php
  2. //index.php
  3. include("php/_manager_class.inc");
  4. $o = new _TbManager();
  5. $_SESSION["soTbmanager"] = $o; 
  6.  
  7. //plik2.php
  8. include("php/_manager_class.inc");
  9. $o = $_SESSION["soTbmanager"];
  10. $o->metoda();
  11. ?>
powinno dzialac
nospor
Cytat
czyli nie muze uzywac serialize i un-se. i jesli uzywam $_SESSION["nazwa"] to wszystko powinno byc ok. a dalej nie jest
w zasadzie tak.

plik1
  1. <?php
  2. class test{
  3. function go(){
  4. echo 'gogog';
  5. }
  6. }
  7.  
  8.  
  9. $_SESSION['test'] = new test();
  10. $_SESSION['test']->go();
  11. ?>


plik2
  1. <?php
  2. class test{
  3. function go(){
  4. echo 'gogog';
  5. }
  6. }
  7.  
  8. $_SESSION['test']->go();
  9. ?>

I mi to dziala
Sprawdz w tym drugim pliku czy wogole masz cos w sesji: print_r($_SESSION).
Byc moze sesja ci nie startuje bo juz jakies naglowki poszly do przegladarki
kamiseq
sprawdze, ale zazwyczaj ustwiam flage w stylu

  1. <?php
  2. if( !isset($_SESSION["session_started"]) && $_SESSION["session_started"] )
  3. $_SESSION["session_started"] = true;
  4. else echo 'dpa';
  5. ?>


ok dziala, dz za pomoc
em1X
kamiseq nie ustawiaj plikom nazw o rozszerzeniach .inc bo kazdy glupi je sobie odczyta (no chyba, ze na serwerze masz ustawione ich parsowanie badz katalog jest chroniony - jezeli tak zwracam honor).
kamiseq
nie nie chronie ich, ale docelowo te pliki nie beda w katalogu public_html
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.