Just nu i M3-nätverket
Jump to content

Session variabel tappar värdet


dallasblue

Recommended Posts

Jag vill lagra data i en array på vilka val en användare av min sida gör genom en registrerad session variabel. Det verkar som det är tanken med Sessions.

Jag registrerar variabeln i följande kod överst på sidan:

<?php

session_start();

session_register("viewed_cards");

$_SESSION['viewed_cards']=array();

?>

 

och läser in användarens data senare på sidan i en foreach sats:

 

array_push($_SESSION['viewed_cards'],$post);

 

och datan i $post hamnar snällt i $_SESSION['viewed_cards']. So far so good.

 

Mitt problem kommer sedan när sidan laddas om och användaren gör nya val arrayen då plötsligt är tom och endast de nya val som gjorts finns i arrayen. Varför då? Ska inte en session variabel hålla kvar all data även om sidan laddas om (inte stängs, utan just bara laddar om samma sida) i browsern?

 

Link to comment
Share on other sites

$_SESSION['viewed_cards']=array();

 

Betyder inte denna raden att du sätter $_SESSION['viewed_cards'] till en tom array? Om detta finns med längst upp betyder det att du tömmer variablen varje gång du laddar sidan.

 

Tar du bort den raden kommer du förvisso få en varning från array_push eftersom den kräven en array. Du kan antingen först kolla om $_SESSION['viewed_cards'] är satt, í så fall behöver du inte göra något. Är den inte satt, dvs förstra gången man komer till sidan, så är det bara att sätta den till en tom array.

 

Eller så använder du bara $_SESSION['viewed_cards'][] = $post som inte ger en varning om det inte redan är en array utan skapar den.

 

K.

Link to comment
Share on other sites

Jamen såklart, rolleyes.gif vad fånigt av mig. Tack Kim! Jag har nu ändrat till:

 

if(!isset($_SESSION['viewed_cards']))

$_SESSION['viewed_cards']=array();

 

Men dessvärre är arrayen fortfarande tom när sidan laddas om. Sen sparas snällt de nya valen, men de gamla är borta.

Link to comment
Share on other sites

När jag testar följande kod fungerar det som det skall, dvs fyller på 0-4 i arrayen varje gång så att det bara bler fler och fler varje gång man ladda om sidan.

 

<?php
session_start();
session_register("viewed_cards");
if(!isset($_SESSION['viewed_cards'])) {
   $_SESSION['viewed_cards']=array();
}

for($i=0;$i<5;$i++) {
   array_push($_SESSION['viewed_cards'],$i);
}

print "<pre>";
print_r($_SESSION['viewed_cards']);
print "</pre>";

?>

 

Så jag hade nog börjat kolla på lite på serverinställningar, eller om det är något på din klient, sessionid lagras som default i en cookie, se till att du tillåter det på din klient.

 

 

K.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...