webForumDet fria alternativet

Behöver hjälp med att lagra värden i sessioner?

PHP

9 svar · 327 visningar · startad av Ken

Medlem sedan mars 2004252 inlägg
Frågan#1

Hur lagrar värdet från en "vanlig variabel, t.ex $index till session varibel?

Medlem sedan mars 20034 471 inlägg
#2

Förutsättningen för att sessions ska funka är att du har

session_start();

högst upp i alla filer där du använder dig av det. Då kan du göra en vanlig tilldelning:

$_SESSION['sessIndex'] = $index;

för att lagra värdet.

Då kan du på följande sidor använda värdet genom att kolla värdet på sessionsvariabeln, tex:

if (isSet($_SESSION['sessIndex']) && $_SESSION['sessIndex'] == x) //.....

Dessutom ska man helst låta indexet i $_SESSION börja med något speciellt så att det aldrig heter samma sak som variabler utanför denna array. Tex genom prefixet sess.

Medlem sedan mars 2004252 inlägg
#3

Hur tilldelar man så att värdet i den vanliga variabel får samma
värde som sessionen? T.ex $index = $_SESSION['sessIndex'], är detta rätt?

Medlem sedan juli 20023 617 inlägg
#4

Borde fungera.

Medlem sedan mars 20034 471 inlägg
#5

Ken skrev:

Hur tilldelar man så att värdet i den vanliga variabel får samma
värde som sessionen? T.ex $index = $_SESSION['sessIndex'], är detta rätt?

Visst, det går att skriva så. Men varför? :q Använd $_SESSION['sessIndex'] där du behöver värdet istället...

Medlem sedan dec. 2002227 inlägg
#6

aasah skrev:

Dessutom ska man helst låta indexet i $_SESSION börja med något speciellt så att det aldrig heter samma sak som variabler utanför denna array. Tex genom prefixet sess.

Exakt varför är detta bra? Kan det hända något hemskt annars?

Medlem sedan aug. 20002 975 inlägg
#7

pakmannen skrev:

aasah skrev:

Dessutom ska man helst låta indexet i $_SESSION börja med något speciellt så att det aldrig heter samma sak som variabler utanför denna array. Tex genom prefixet sess.

Exakt varför är detta bra? Kan det hända något hemskt annars?

När register_globals är satt kommer sessionsvariabeln då att byta värde, till det värde variabeln har.

Har du en $_SESSION['var'] och kör $var=5, så kommer, om register_globals är satt, också $_SESSION['var'] att få värdet 5.

Har för mig att jag dessutom någon gång råkat ut för detta (variabelkrock) då jag haft en $_POST['var'] eller liknande och register_globals satt, men det är jag inte helt säker på.

Medlem sedan dec. 2002227 inlägg
#8

Aha. Men om register_globals är av så är det ingen fara med andra ord?

Plus, i mitt fall tror jag det är en del av en array som har samma namn som sessionen, så det är väl ingen risk antar jag.

Medlem sedan aug. 20002 975 inlägg
#9

Att det är en array gör ingen skillnad, arrayen kommer då vid register_globals satt att läggas i sessionsvariabeln.

Är du medveten om det så är det okej på den server du ligger på nu, som har register_globals Off, men det är något att ha i bakhuvudet framöver när du skriver skript för andra servrar eller vill flytta ditt skript till annat webbhotell.

Alltså försöka göra sitt skript så portabelt som möjligt.

Medlem sedan dec. 2002227 inlägg
#10

Jo, jag skall tänka på det. Förövrigt ganska dumt att ha två variablar som heter samma sak ändå. Förvirring. :)

255 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)