Just nu i M3-nätverket
Gå till innehåll

Session variabel tappar värdet


dallasblue

Rekommendera Poster

dallasblue

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?

 

Länk till kommentar
Dela på andra webbplatser

$_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.

Länk till kommentar
Dela på andra webbplatser

dallasblue

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.

Länk till kommentar
Dela på andra webbplatser

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.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...