Avatar billede astengaard Nybegynder
12. september 2004 - 01:59 Der er 3 kommentarer og
1 løsning

Problemer med eget objekt i session

Jeg er ved at blive vanvittig, så nu er jeg nødt til at have noget hjælp...

Jeg er ved at lave en hjemmeside, hvor jeg vil bruge session til at holde et objekt jeg selv har defineret.

På hver side bruger jeg en topbar.php, og vil gerne i denne fil have en $foo = $_SESSION['objekt'], så jeg på selve siden bare kan bruge $foo.

Men hvordan gør jeg det helt præcist? Og hvordan opdaterer jeg objektet? Er det bare ved at opdatere $foo på siden?
Avatar billede hmm10 Nybegynder
12. september 2004 - 11:08 #1
Jeg tror, at du forklare det lidt indviklet, men jeg da give mit bud:


SELVE SIDEN (fx. index.php):
<?
session_start();

require("topbar.php");
?>

<body>
<?= $foo; ?>
</body>

topbar.php
<?

if(  Definer, hvornår sessionen skal træde i kraft    ) {
  $_SESSION['objekt'] = '<img alt="" />';
}elseif(  Definer, hvornår sessionen ikke skal træde i kraft mere  ) {
  $_SESSION['objekt'] = NULL;
}

$foo = $_SESSION['objekt'];

?>
Avatar billede astengaard Nybegynder
12. september 2004 - 12:47 #2
Jeg skal prøve at forklare det lidt bedre.

Jeg vil gerne have en indkøbskurv på en hjemmeside, og jeg har lavet en klasse kurv, som holder de ønskede oplysninger. Disse ligger i kurv.php.

I kurv.php er der også en funktion getKurv(), som tjekker om kurv findes i session (isset($_SESSION['kurv']) og gemmer den i $kurv hvis den gør ($kurv = $_SESSION['kurv']) ellers oprettes ny og gemmes i session ($kurv = new Kurv(); $_SESSION['kurv'] = $kurv;)

Jeg har en topBar som inkluderes på alle sider og viser oplysninger om hvor mange varer der er i kurven og den samlede pris.
I topBar har jeg en $kurv = getKurv().

Jeg har lavet en test-side som tilføjer to varer til kurven, og jeg udskriver indholdet af kurven før og efter. Lige meget hvor mange gange jeg refresher siden så er der før tilføjelsen ingen varer i kurven og efter er der kun dem jeg har tilføjet.

Så det er som om jeg arbejder på en "lokal" kurv.
Jeg bruger følgende kommando, som jeg har lavet i kurv.php:
$kurv->addVarelinie($vareid,$antal);

Og jeg burde vel kunne bruge $kurv når jeg har hentet den i topBar?

Jeg håber dette gav lidt mere mening...
Avatar billede alvion Nybegynder
12. september 2004 - 13:03 #3
Du bør gemme objektet i sessionen således:

$_SESSION["kurv"] = serialize($kurv);

Så gemmes oplysninger om klassen og de initialiserede variable i en særlig formatteret streng. Du "henter" objektet igen således

$kurv = unserialize($_SESSION["kurv"]);

unserialize() finder selv ud af, der er tale om et objekt af den klasse, som du har defineret og opretter objektet derefter.
Avatar billede astengaard Nybegynder
23. september 2004 - 13:58 #4
Jeg har parkeret denne løsning i første omgang, da jeg ikke kan få det til at virke, og istedet har valgt at bruge et array...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester