Session problem

Tags:    php

Når folk logger ind hos:
www.shafh.dk/venner
laves der disse sessions:


$_SESSION['loget_in'] = 1;
$_SESSION['Brugernavn'] = $brugernavn;
$_SESSION['Password'] = $password;


Nu har jeg prøvet at tjekke om brugeren er logget ind eller ej. Det har jeg gjord på en anden hjemmeside sådan her:


if($_SESSION['loget_in'] = "1") {
?>Du er ikke logget ind
<div class="strej"><IMG src="image/linje.JPG" width="650" height="1"></div>
<?php


//Lidt mere kode står her


}
else {
?>Du er logget ind<?php

//Lidt mere kode står her


}
?>



Men når jeg prøver, kommer der heletiden: er ikke logget ind - også selvom man er!

Jeg har husket af starte session! Hvad gør jeg galt?



Shafh
www.shafh.dk
Shafh@stofanet.dk
Theis F. Hinz

Make you glad to change the world

[Redigeret d. 28/04-05 15:48:40 af Shafh]



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Når folk logger ind hos:
www.shafh.dk/venner
laves der disse sessions:


$_SESSION['loget_in'] = 1;
$_SESSION['Brugernavn'] = $brugernavn;
$_SESSION['Password'] = $password;


Nu har jeg prøvet at tjekke om brugeren er logget ind eller ej. Det har jeg gjord på en anden hjemmeside sådan her:


if($_SESSION['loget_in'] = "1") {
?>Du er ikke logget ind
<div class="strej"><IMG src="image/linje.JPG" width="650" height="1"></div>
<?php


//Lidt mere kode står her


}
else {
?>Du er logget ind<?php

//Lidt mere kode står her


}
?>



Men når jeg prøver, kommer der heletiden: er ikke logget ind - også selvom man er!

Jeg har husket af starte session! Hvad gør jeg galt?



Shafh
www.shafh.dk
Shafh@stofanet.dk
Theis F. Hinz

Make you glad to change the world

[Redigeret d. 28/04-05 15:48:40 af Shafh]

Du skal bruge 2 ligheds tegn når du tjekker en variabel for en værdi:
if($_SESSION['loget_in'] == "1") {


Desuden:
Med din kode vil den skrive
"Du er ikke logget ind", hvis $_SESSION['loget_ind'] = "1"

Skal den ikke skrive at man ER logget ind?


[Redigeret d. 28/04-05 15:58:30 af PHP-Nørden]



Du skal bruge 2 ligheds tegn når du tjekker en variabel for en værdi:
if($_SESSION['loget_in'] == "1") {


Desuden:
Med din kode vil den skrive
"Du er ikke logget ind", hvis $_SESSION['loget_ind'] = "1"

Skal den ikke skrive at man ER logget ind?


[Redigeret d. 28/04-05 15:58:30 af PHP-Nørden]





Jeg har prøvet med to == men resultatet blev næsten det samme som før! Nu står der: du er online selvom man er logget af! Og det samme sker der hvis man er logget på!


Meget mystisk :D



Shafh
www.shafh.dk
Shafh@stofanet.dk
Theis F. Hinz

Make you glad to change the world

[Redigeret d. 28/04-05 22:09:41 af Shafh]



Det SKAL være 2 lighedstegn (==) for at se om noget er ens, et lighedstegn vil være som at sige:
Hvis jeg kan sætte denne variable til det angivne, så er det godt.
I stedet for:
Hvis denne variables indhold er det samme som det angivne, så er det godt.

Når du logger ud så husk at "udrydde" din session, session_destroy, just in case. Det er heller ikke en god idé at gemme brugerens password i session.

Læs mere her:
http://dk.php.net/manual/en/ref.session.php

Mvh Bob

Edit:
En anden ting, du sætter din session til 1, altså "true", og du tjekker om den er "1", og ikke true - i princippet er det det samme, men man ved aldrig :p
Og en anden ting, når du siger du tjekker din session på en anden hjemmeside, er det så et andet domæne du mener? For din session er kun registreret til dit pågældende domæne. Der kan i nogle tilfælde opstå problemer hvis dine interne links skifter fra henholdsvis med www. og uden.

[Redigeret d. 03/05-05 00:36:51 af Jeppe Dyrby]



t