Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][sesje] Zapis obiektu w sesji
Forum PHP.pl > Forum > Przedszkole
woj_tas
Witam.
Napisałem swego czasu prostą klasę do obsługi formularzy. Wszytko było pieknie, doskonale, dopóki nie dopisałem mechanizmu przyjaznych urli.
Przyjazne urle korzystają z mod_rewrite. Oto plik .htaccess:
  1. <?php
  2. <IfModule mod_rewrite.c>
  3. RewriteEngine On
  4. RewriteCond %{REQUEST_FILENAME} !-d
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
  7. </IfModule>
  8. ?>


No i ta moja piekna klasę formularzy skonstruowałem tak, że po wygenerowaniu formularza na stronie cały formularz zapisuje sie w sesji.
Dokładnie:
  1. <?php
  2. function zapisz_w_sesji()
  3. {
  4. $_SESSION['form']=$this;
  5. }
  6. ?>

Wszystko bylo ok, dopóki nie dodałem pliku .htacces. Po dodaniu tych kilku reguł, formularz nie zapisuje sie w sesji.
Próbowałem także zapisywać w sesji obiekt zserializowany (wiem, wiem, powinno sie tak robic), ale nie dziala. Najciekawsze w tym wszystkim jest to że ręcznie zapisana sesja tzn:
  1. <?php
  2. $_SESSION['sesja'] = 1;
  3. ?>

zapisuje się znakomicie.
Dodam też iż plik z formularzami includuje przed session_start(); Próbowałem także po, bez rezultatów.

Co może być tego przyczynąquestionmark.gif
sticker
jesli chcesz używać sessji to w pliku skryptu który uruchamiasz na samej górze daj sobie session_start() i powinno działać. Zanim przekażesz obiekt do sesji niezbędna jest jego serializacja inaczej zostanie wywołana domyślna metoda __toString
woj_tas
Cytat(sticker @ 29.10.2007, 23:58:30 ) *
jesli chcesz używać sessji to w pliku skryptu który uruchamiasz na samej górze daj sobie session_start() i powinno działać.

Sesje wywołuje po includowaniu plików. Nie mogę przed. Muszę najpier załadować pliki z classa.
  1. <?php
  2. Unknown(): The script tried to execute a method or access a property of an incomplete obje
    ct. Please ensure that the class definition form of the object you are trying to operate on was loaded _before_ 
    the session was started in /usr/local/apache/www/htdocs
  3. ?>


Cytat(sticker @ 29.10.2007, 23:58:30 ) *
Zanim przekażesz obiekt do sesji niezbędna jest jego serializacja inaczej zostanie wywołana domyślna metoda __toString

Tak, tak wiem, niestety bez zmian.
sticker
pokaż wiecej skryptu to rozwiążemy problem
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.