Jag har lagt på en inloggning på min sida, mha sessioner. Om man sedan matar in en ny url och sedan trycker "Bakåt" kommer man åter in på min sk skyddade sida.
Hur gör man för att döda sessionen om inte användaden själv loggat ut?
Jag tror inte att det går men du kan automatiskt kontrollera om tiden gått ut, utan att personen varit aktiv på dina skyddade sidor genom att uppdatera ett datetime-fält i en databas varje gång du kontrollerar att din $_SESSION variabel är satt, för att sedan ta bort variabeln om den inte längre är aktuell. Detta kan du göra i en sida som besöks oftare, din index.php t.ex. Jag har aldrig testat denna metoden men läst lite och tänkt att "så här är det nog de menar", men testa dig fram :)
I nuläget sätts ingen timevariabel. Detta för att ingen ska drabbas av att bli utloggad mitt under sitt arbete.
Men det jag fiskar efter är en lösning till att om någon är inloggad på min sida X och sedan går in på en annan sida Y i browsern, men sedan ångrar sig och trycker på tillbaka-knappen. Då vill jag att personen ska behöva logga in på nytt.
Det måste ju finnas en lösning på detta.
Servern har ingen aning om ifall besökaren surfar på andra sidor, eller sitter och läser på en sida skickad från servern. Det är därför omöjligt för servern att koppla bort någon.
I vilket fall kommer användaren automatisk att kopplas bort från sessionen efter 24 minuter (defaultvärde).
Vill du att detta ska ske tidigare så får du göra något i stil med Helmertz förslag.
Menar du att i nuläget om man trycker "back" efter mer än 24 minuter, så kommer man inte in på sidan och att detta är default?
Kan någon ge ett exempel på hur man sätter detta datetime-värde och hur det fungerar?
Menar du att i nuläget om man trycker "back" efter mer än 24 minuter, så kommer man inte in på sidan och att detta är default?
Ja, när det gått mer än 24 minuter så rensas inaktiva sessioner bort.
Det finns dock några aber. Ligger du på ett webbhotell kan man säga att det är så, men har du en egen server med få besökare, så kan du behöva ändra lite din php.ini för att det inte ska kunna bli längre än 24 minuter.
I din php.ini står det följande:
; Define the probability that the 'garbage collection' process is started
; on every session initialization.
; The probability is calculated by using gc_probability/gc_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts
; on each request.
Det innebär att varje gång session_start() körs så är sannolikheten 1/100 att för gamla sessioner rensas bort.
Detta är inga problem på ett webbhotell med många sidor/användare, men har du en egen server med färre användare bör du öka på session.gc_probability.
Hur gammal sesssionen får bli gör du i inställningen session.gc_maxlifetime som default är satt till 1440 sekunder = 24 minuter.
Ska du testa detta på en lokal utvecklingsserver så bör du öka session.gc_probability till 100, samt testa med två stycken olika webbläsare (för att bli olika användare mot servern).
261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25