Gå til innhold

Objekter i session-variabel


Anbefalte innlegg

Jeg holder på å lage et system hvor loginmodulen legger hele user-objektet mitt i en sessionvariabel. Jeg tror det går bra.

 

Derimot - når jeg skal hente ut igjen data fra dette objektet skjærer det seg og jeg får feilmelding. Objekt User er blitt en incomplete_class, type slik:

 

object(__PHP_Incomplete_Class)#1 (8) { ["__PHP_Incomplete_Class_Name"]=> string(4) "User" ["userid:private"]=> string(1) "7" ["username:private"]=> string(4) "sivh" ["password:private"]=> string(15) "skiftet_passord" ["firstname:private"]=> string(6) "elling" ["lastname:private"]=> string(6) "elling" ["email:private"]=> string(4) "elli" ["userlevel:private"]=> string(1) "1" }

 

Jeg har forsøkt å google, men de kunne likegjerne ha skrevet på hebraisk. Jeg forstod ikke hva de forsøkte å fortelle meg.

 

$user er serialized i sessionvariabelen $_SESSION['author']. Burde den ikke vært det?

Lenke til kommentar
Videoannonse
Annonse

Vil tro at problemet oppstår når php laster inn session variablenen og unserializer dataene. Ettersom at bruker klassen din ikkje er lasta inn da så vil den lage ein incomplete class (på samme måte som det blir stdClass i php4). Prøv og serialize klassen en gang før du legger den inn i session variablene og så unserialize den før du bruker den seinare. Vist dette ikkje er mulig så går det kanskje å lage ein rask session handler som baserer seg på den som ligger der fra før og la den hente user klassen før du henter variabelene.

 

Edit: Har ikkje brukt php5 så mykje men vil ikkje __autoload kunne laste inn user klassen når php internt laster inn session variablene?

Endret av Runar0
Lenke til kommentar

sjekk phpinfo() ?

document_root endrer seg ikke med subdomene, men med php.ini (tror jeg)

Antakelig er subdomenet ditt bare en mappe under document_root ett eller annet sted.

dersom document_root er /www, så kan subdomenet ditt godt være /www/sub

Endret av Nazgul
Lenke til kommentar
der står det ikke det jeg vil ha.

Jeg vil ha noe slikt som Home/Stud4/sha015/public_html osv

 

Jeg er litt usikker på om min autoload fungerer, for jeg må eksplisitt innhente User_class.php.

 

Møkk!

Hva med dirname( $_SERVER["SCRIPT_FILENAME"] ) ?

Endret av Nazgul
Lenke til kommentar

Her er min index.php. hvis noen kan se hvorfor __autoload ikke fungerer så blir jeg superhappy! for det ser ikke jeg :(

 

<?php
session_start();

$root =dirname(__FILE__);
$delimiter = ":";
ini_set("include_path", ini_get("include_path")
 ."$delimiter$root/model/."
 ."$delimiter$root/controller/."
 ."$delimiter$root/dao/."
 ."$delimiter$root/smarty/core/libs/"
// Her kan det settes inn flere mapper hvis det trengs
);
// hvis __autoload hadde fungert hadde jeg vel ikke trengt disse?
// Men det gjør jeg.
require_once('Smarty.class.php');
require_once('abstract_controller.php');
require_once('config.php');
require_once('user_class.php');
# Opprette smarty-objekt
$smarty = new Smarty();

$smarty->template_dir = 'view';
$smarty->compile_dir  = 'smarty/compiled';
$smarty->cache_dir	= 'smarty/cached';
$smarty->config_dir   = 'smarty/configs';

# Slå sammen post og get
$request_params = array_merge($_GET, $_POST, $_SESSION);

# Finne kontroller eller default
$page = isset($request_params["page"])? $request_params["page"] : "default";

$controller_class = "${page}_controller";
$controller_file  = "controller/$controller_class.php";
if (file_exists($controller_file)) {
require_once($controller_file);
$controller = new $controller_class;
$controller->prepare_model_and_view($request_params, $smarty);
}
else {
$smarty->assign("page_title", "Template Error");
$smarty->assign("content_tpl", "error.tpl");
}

$smarty->display("layout.tpl");

function __autoload($class_name) {
require_once $class_name . '_class.php';
}

?>

Endret av CruellaDeVille
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...