Session variabler knyttet til et site

Tags:    php

Jeg er i gang med lave et login system til mit site, og jeg har brug for noget hjælp. Jeg synes ikke, jeg har fundet noget i andre tråde, der kan besvare mit spørgsmål.

Når en bruger logger på mit site, så sætter jeg nogle session variabler, der indeholder informationer om de pågældende bruger. Men, jeg vil gerne kunne få fat i alle de session variabler, der er knyttet til mit site. Bruger jeg $_SESSION får jeg kun fat i de session variabler, der er knyttet til den pågældende bruger.

Kan det løses?

På forhånd tak

Carsten



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Jeg er i gang med lave et login system til mit site, og jeg har brug for noget hjælp. Jeg synes ikke, jeg har fundet noget i andre tråde, der kan besvare mit spørgsmål.

Når en bruger logger på mit site, så sætter jeg nogle session variabler, der indeholder informationer om de pågældende bruger. Men, jeg vil gerne kunne få fat i alle de session variabler, der er knyttet til mit site. Bruger jeg $_SESSION får jeg kun fat i de session variabler, der er knyttet til den pågældende bruger.

Kan det løses?

På forhånd tak

Carsten


Forstår ikke helt hvad du mener. Sessions ER jo netop til at gemme informationer om brugerne. Skal du have variabler fra din egen side, kan du jo bare skrive dem i koden, eller gemme det i en database



Hej Jesper,

mit login system bruger allerede en MySQL database.

I databasen ligger der en bruger tabel, der indeholder informationer om alle de brugere, der kan logge på, om de er online, hvad tid de loggede på etc. Når en bruger vælger at logge på, så bliver der sat et "flag" i bruger tabellen, at nu er den pågældende bruger logget på.

Jeg starter dernæst en session med session_start() og gemmer session id'en i en variabel, der hedder $session_id. Herefter gemmer jeg brugerens oplysninger i et array, der meget passende hedder $user, og det array lægger jeg ind i en session variable vha at syntaxen $_SESSION[$session_id] = $user.

Nu er der sat et flag i databasen om at brugeren har logget på, og brugerens oplysninger ligger i en session variabel. Det fungerer ganske glimrende. Når brugeren trykker på "Log ud" knappen, så fjerner jeg flaget i bruger tabellen og kører session_destroy().

Mit problem er, hvis brugeren bare vælger at slukke sin maskine i stedet for at trykke på "Log ud" knappen, så bliver der flag aldrig fjernet. Sessionen har naturligvis en timeout, så den bliver "destroy'et" efter et stykket tid, men andre brugere tror stadig at han/hun er logget på, fordi den liste jeg genererer, som viser hvem der er "på", kigger nede i bruger tabellen, og der står at han/hun stadig er online.

Det var en lang smøre. Nu kommer det egentlige spørgsmål:

Kan jeg ikke få en oversigt over samtlige sessions, der er startet på mit site? På den måde kan jeg få en oversigt over hvilke brugere, der er online. Jeg har set i andre tråde, at man kan "kode sig ud" af det ved at sætte et timestamp for brugerens sidste handling på sitet, og hvis der er gået mere end f.eks 10 minutter, så fjerner den selv flaget i databasen.

Er der ikke en anden metode?

Mit indlæg er måske lidt kringlet formuleret, men jeg håber at det sporer dig ind på, hvad jeg mener.

Mvh.

Carsten



$_SESSION[$session_id] = $user;

du skal ikke bruge session id'et:

$_SESSION = $user;


Sessions gemmes i nogle filer, som du måske kan få adgang til, men ellers er det måden at gøre det på med et timeout. Du kan så vælge det samme timeout, som dine sessions har.



$_SESSION[$session_id] = $user;

du skal ikke bruge session id'et:

$_SESSION = $user;


Sessions gemmes i nogle filer, som du måske kan få adgang til, men ellers er det måden at gøre det på med et timeout. Du kan så vælge det samme timeout, som dine sessions har.


Det kan så ikke lade sig gøre...
Du bliver nødt til at gøre det som:

$user = 'brugernavn';
$_SESSION['user'] = $user;
eller
session_register("user");



t