/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
session_id()
Fra : Bjarni \(Privat\)


Dato : 19-12-01 13:51

Er det muligt at tvinge et nyt session_id igennem, hver gang en client
henter en php-side?

Jeg har en login side, hvor clienten får tildelt et session_id med:
session_start();

Når clienten logger ud reset'er jeg session med:
session_destroy();

Begge hændelser (logon og logoff) gemmer jeg i en database sammen med
session_id, for hermed at kunne regne ud, hvor lang tid de forskellige
clienter har været logget på.

Mit problem er, hvis clienten - uden at lukke sin browser ned - logger ind
igen i mit system, så får han tildelt den samme session_id.

Hvordan sikre jeg, at han altid får et nyt session_id ved login?

/bjarni




 
 
Dennis Hansen (19-12-2001)
Kommentar
Fra : Dennis Hansen


Dato : 19-12-01 13:55


"Bjarni (Privat)" <bjarni@mortensen.as> wrote in message
news:3c208d1a$0$62850$edfadb0f@dspool01.news.tele.dk...

> Hvordan sikre jeg, at han altid får et nyt session_id ved login?

Kan du ikke checkke ved dette login om der allerede er en session igang,
hvis der er kalder du destroy på det og starter et nyt ?



Bjarni \(Privat\) (19-12-2001)
Kommentar
Fra : Bjarni \(Privat\)


Dato : 19-12-01 13:59

"Dennis Hansen" <dennis__hansen@hotmail.com> skrev i en meddelelse
news:3c208e21$0$35640$edfadb0f@dspool01.news.tele.dk...
> Kan du ikke checkke ved dette login om der allerede er en session igang,
> hvis der er kalder du destroy på det og starter et nyt ?
>
Hvis jeg laver en session_start() efter en session_destroy() får jeg det
samme session_id, hvorfor?



Dennis Hansen (19-12-2001)
Kommentar
Fra : Dennis Hansen


Dato : 19-12-01 14:05


"Bjarni (Privat)" <bjarni@mortensen.as> wrote in message
news:3c208f01$0$62900$edfadb0f@dspool01.news.tele.dk...

> Hvis jeg laver en session_start() efter en session_destroy() får jeg
det
> samme session_id, hvorfor?

Jeg vil tro du bare får det første ledige, betyder det noget ?

Du kunne også checkke ved login om der er en session igang, er der, får
du den til at logge denne bruger af,
så bliver din datbase opdateret.
Logoff sender så videre til login hvor en ny session startes...muligvis
med samme id.

Jeg ved ikke om du kan bruge det til noget.

Mvh
Dennis





Bjarni \(Privat\) (19-12-2001)
Kommentar
Fra : Bjarni \(Privat\)


Dato : 19-12-01 14:34


"Dennis Hansen" <dennis__hansen@hotmail.com> skrev i en meddelelse
news:3c20908e$0$35611$edfadb0f@dspool01.news.tele.dk...
> Jeg vil tro du bare får det første ledige, betyder det noget ?

Ja; fordi jeg bruger session_id i min database til at genkende den enkelte
login-periode. Jeg betragter to login af samme client, som to
login-perioder.

>
> Du kunne også checkke ved login om der er en session igang, er der, får
> du den til at logge denne bruger af,
> så bliver din datbase opdateret.
> Logoff sender så videre til login hvor en ny session startes...muligvis
> med samme id.
>
> Jeg ved ikke om du kan bruge det til noget.
>
> Mvh
> Dennis
>
Min login - logout procedure virker fint. Mit eneste problem er i min
database, hvor der kan opstå flere login (og logout) med samme session_id.



Tonni Aagesen (19-12-2001)
Kommentar
Fra : Tonni Aagesen


Dato : 19-12-01 14:34

"Bjarni (Privat)" <bjarni@mortensen.as> skrev i en meddelelse
news:3c208f01$0$62900$edfadb0f@dspool01.news.tele.dk...

> Hvis jeg laver en session_start() efter en session_destroy() får jeg det
> samme session_id, hvorfor?

Prøv at læse om session i manualen under brugerkommentarene, så vidt jeg
husker, er der flere, der har haft det samme problem. Der vist også et par
løsningsforslag

Jeg tror ikke, som Dennis nævner, at du bare får det først ledige id
tildelt. Et id må vel blive generet i "runtime" og ikke gå efter en liste,
da det vel må give en sikkerhedsrisiko.


--
Mvh
Tonni Aagesen
agent29@mail1.stofanet.dk




Dennis Hansen (19-12-2001)
Kommentar
Fra : Dennis Hansen


Dato : 19-12-01 15:00


"Tonni Aagesen" <use.my@signature.com> wrote in message
news:9vq4t3$acn$1@sunsite.dk...
> "Bjarni (Privat)" <bjarni@mortensen.as> skrev i en meddelelse
> news:3c208f01$0$62900$edfadb0f@dspool01.news.tele.dk...

> Jeg tror ikke, som Dennis nævner, at du bare får det først ledige id
> tildelt. Et id må vel blive generet i "runtime" og ikke gå efter en
liste,
> da det vel må give en sikkerhedsrisiko.

Korrekt, men denne rutine kan altså ikke garanetere at producere et
unikt og aldrig før brugt
id hvis der ikke allerede er en session igang på serveren.

Mvh
Dennis




Tonni Aagesen (19-12-2001)
Kommentar
Fra : Tonni Aagesen


Dato : 19-12-01 15:44

"Dennis Hansen" <dennis__hansen@hotmail.com> skrev i en meddelelse
news:3c209d4e$0$55552$edfadb0f@dspool01.news.tele.dk...

> Korrekt, men denne rutine kan altså ikke garanetere at producere et
> unikt og aldrig før brugt
> id hvis der ikke allerede er en session igang på serveren.

Nej, men sandligheden er forsvindende lille


--
Mvh
Tonni Aagesen
agent29@mail1.stofanet.dk



Bjarni \(Privat\) (19-12-2001)
Kommentar
Fra : Bjarni \(Privat\)


Dato : 19-12-01 15:01


"Tonni Aagesen" <use.my@signature.com> skrev i en meddelelse
news:9vq4t3$acn$1@sunsite.dk...
> Prøv at læse om session i manualen under brugerkommentarene, så vidt jeg
> husker, er der flere, der har haft det samme problem. Der vist også et par
> løsningsforslag

Tak for forslaget !!!

Jeg fandt følgende, som virker:

$new_session_id = md5($REMOTE_ADDR.$REMOTE_PORT.time()) ;
session_id($new_session_id);
session_start();

/bjarni




Søg
Reklame
Statistik
Spørgsmål : 177505
Tips : 31968
Nyheder : 719565
Indlæg : 6408554
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste