Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> otwarcie sesji w konstruktorze, dlaczego nie działa?
koodlaty
post
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):

  1. <?php
  2. if(!isset($_SESSION['obiekt']))
  3. {
  4. $obiekt = new klasa;
  5. $_SESSION['obiekt'] = $obiekt;
  6. }else
  7. $_SESSION['obiekt'] -> jakas_metoda();
  8.  
  9.  
  10. class klasa
  11. {
  12. function __construct()
  13. {
  14. }
  15.  
  16.  
  17. public function jakas_metoda()
  18. {
  19.  
  20. }
  21. }
  22. ?>


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
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!!!
Go to the top of the page
+Quote Post
koodlaty
post
Post #3





Grupa: Zarejestrowani
Postów: 118
Pomógł: 3
Dołączył: 6.07.2006
Skąd: Dublin

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


Cytat(nospor @ 12.09.2006, 14:11:36 ) *
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?

  1. <?php
  2. $a = 2;
  3. $b = 2;
  4.  
  5. $c = $a + $b;
  6.  
  7.  
  8. if(!isset($_SESSION['wynik']))
  9. {
  10. $_SESSION['wynik'] = $c;
  11. echo('nie bylo sesji - tworzymy');
  12. }else
  13. {
  14. echo($_SESSION['wynik'] . '<br />');
  15. echo('sesja istnieje');
  16. }
  17. ?>


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.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 25.12.2025 - 22:52