Hogyan kell tárolni objektumot $_SESSION változóban?
A következő a problémám.
//Van egy osztályom:
class user{
private $sessionid;
function __construct(){
$this -> sessionid = session_id();
}
function getSessionid(){
return($this -> sessionid);
}
}
//amit ha példányosítok:
$_SESSION['user'] = new user;
//akkor simán kiírja a következő parancsra az azonosítót:
/*(line 14)*/ print($_SESSION['user'] -> getSessionid());
//de ha így példányosítom:
if(!isset($_SESSION['user'])) {$_SESSION['user'] = new user();}
// Akkor a következő híbát kapom a kiíratásra:
Fatal error: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "user" 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 C:\...index.php on line 14
A $_SESSION['user'] változó nem kap később értéket, úgy általában minden műkszik a $_SESSIONOKKAL, szoval nem használtam unsetet sem. Ötlet? :)
Esetleg...
if(!isset($_SESSION['user'])) {$_SESSION['user'] = new user;}
Az autoloadert emlegeted, de a példakódban nincs definiálva az __autoload() metódus...
Egyébként nekem elsőre inkább a szérializáció ugrott be.
Ha azt sikerül megérteni, akkor valahogy így nézne ki:
$x = new user;
// ...
$_SESSION['user'] = serialize($x);
// kiolvasás:
$x = unserialize($_SESSION['user']); // itt is látszódjon a "user" class!
// ...
#2 ja igen, már zárójel nélkül is kipróbáltam, de ugyanaz a helyzet. Meg a serialize-ra is gondoltam, csak hát az objektumoknak nem pont hogy könnyebbé kéne tenniük az életünket? :)
És tényleg kimaradt:
function __autoload($class){
$file = "../class/".$class.".inc.php";
require_once($file);
Megkönnyítik, meg mindigen, igen.
De ha jól tudom, a session-höz tartozó dolgokat egy szövegfájlban tárolja a PHP a szerveren. Azt meg ugye csak úgy nem lehet...
A szérializáció pedig pont azt csinálja, hogy egy objektumot szöveggé alakít.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!