Men sessionen er stadig aktiv hvis brugeren istedet lukker browseren eller bare skriver en ny adresse i adresselinjen. Hvordan får man så fjernet session/logget brugeren ud?
Den vil jeg principielt fraråde. PHP sletter selv de gemte data før eller siden. Du bør ikke pille ved disse data selv, og du bør designe din applikation så de evt. stadig gemte data ikke skader noget.
setcookie(\'PHPSESSID\',\'\',time()-3600,\'/\'); Det samme som ovenstående, plus at det ikke er sikkert sessionsid gemmes i en cookie. Der er andre måder.
Det du skal gøre når folk logger ud, er simpelt hen at ændre det sted i sessionen, hvor der står, at man er logget ind.
jeg har i hvertfald ikke haft problemer med at sessionen stadig var/er aktiv efter en bruger har logget ud, via ovenstående eksempler du skal dog selv rette disse linier
cyberdude >> Har du prøvet at læse lidt om session_destroy i manualen? Fx linje 1 i beskrivelsen? ;-) Ellers så er den her: bool session_destroy (void)
\"void\" betyder, at der skal IKKE stå noget. Session_destroy sletter HELE sessionen. Hvis du vil slette én variabel, så brug session_unregister, eller overskriv værdien. Fx. med \"false\" eller \"null\".
Jeg tror ikke helt i har forstået mit spørgsmål. Brugeren kan klikke på Log Out linket, ikke nogen knap!... Når de gør det, slutter den sesison og sletter alt hvad der havde med den at gøre.
Men hvad nu hvis brugeren lukker browseren ned eller båre springer videre uden at logge ud, så kører session stadig på fuld hammer...
myplacedk>> \"unlink(session bla bla)\" og \"setcookie(sesid bla bla -3600)\" er da ok at bruge, da de sletter total, hvad skulle ulemperne ved denne metoed være?
du kan lave en funktion i javascript....... og så i din <body onUnload=\"logud()\">
<script language=javascript> <!--- skjul script for ældre browsere
function logud(){ <? session_unregister(brugernavn); session_unregister(password); session_destroy(); ?> } // slut på kommentar der skjuler for ældre browsere --> </script>
dette skulle / formoder jeg virker!
Har dog ikke testet, men det burde køre funktionen \"logud()\" når brugeren forlader vinduet
Ja man kan godt blande javascript og php på den måde....... prøv denne her og ret den til! det jeg har tilføjet er et tjæk på om $http_host er lige med det du definere.....
lav evt en fil der hedder phpinfo.php som indeholder følgende <? phpinfo() ?> og afvikel den så kan du et stykke nede aflæse denne variabel! og så længe det udtryk er sandt ja så udføre den ikke koden!
<body onUnload=\"logud()\">
<script language=javascript> <!--- skjul script for ældre browsere
function logud(){ <? if ($HTTP_HOST == \'www.DINHOST.dk\') { // foretag intet! } else { session_unregister(brugernavn); session_unregister(password); session_destroy(); } ?> } // slut på kommentar der skjuler for ældre browsere --> </script>
cyberdude >> Lige det stunt du lavede der, med en javascript-funktion der skulle udføre php-kode, kan IKKE lade sig gøre. :) Ikke på den måde, i hvert fald.
Anyway, her er metoden som \"vi andre\" bruger:
Lad os sige, at efter 20 minutter vil du logge personen ud automatisk.
Hver gang en bruger foretager sig noget, opdateres et timestamp. Ved at sammenligne dette timestamp med \"nu\", kan vi se idle-tiden. Hvis den er over 20 minutter kører du samme funktion som du ville have kørt, hvis brugeren selv trykkede \"logud\".
Get it? Jeg er ret træt lige nu, så mine forklaringer er måske ikke helt tydelige... :)
Men er der ikke en, der kan komme med scriptet, altså et nogenlunde funktionelt script, eller noget der bare kan vise vejen med meget meget store pille...
Prøv at lukke spørgsmålet her, og oprette evt. et i javascript kategorien, for jeg mener der findes en javascript funktion som kan åbne et popup vindue hvis og kun hvis selve browser vinduet bliver lukket elelr brugeren hopper vidre til et andet domæne....... Men jeg har ikke særlig meget forstand på javascript, så prøv at spørge der!
Såså, det er ikke en chat det her. :) Folk kigger ind, når de har tid.
Det er dette, du vil have kode til, ik? ____
Lad os sige, at efter 20 minutter vil du logge personen ud automatisk.
Hver gang en bruger foretager sig noget, opdateres et timestamp. Ved at sammenligne dette timestamp med \"nu\", kan vi se idle-tiden. Hvis den er over 20 minutter kører du samme funktion som du ville have kørt, hvis brugeren selv trykkede \"logud\". ____
Prøv at gå i gang med at skrive det selv, så kan du jo spørge hvis du går i stå.
Jeg vil altså ikke lave det hele for dig, kun hjælpe dig med at lave det selv. Hvis det er meget vigtigt kan du overveje at betale mig for at gøre det. Det er det, jeg lever af.
all-technology >> Husk at det er en MINIMUM-tid. Efter den tid bliver sessionsdata godt nok markeret som \"garbage\", men den er stadig tilgængelig. Garbage bliver slettet i ny og næ, men på fx. en meget lidt brugt hjemmeserver kan det godt ligge i fx. en uge.
Hvornår bliver garbage så slettet? Dette er default: session.gc_probability = 1 Det betyder, at når der startes en ny session er der 1% sandsynlighed for, at der bliver foretaget garbage collection.
Ja, det er rigtig saa hvis man har session.gc_probability = 100 er man sikker paa at den bliver fjernet ved den første nye session efter session.gc_maxlifetime
all-technology >> Hvilket vel ikke er til den helt store gavn, hvis man ikke har nye besøgende hvert minut? Eller hvor lang tid fyren nu kan vente ud over de 20 minutter...
indsæt de variabler der skal bruges for at logge den rigtige bruger ud!
og så på ALLE de link der bruges på dit site skal angives sådant her <a href=\"dinfil.php\" onClick=\"flag=0\">link</a>
så virker det!!
dvs. at har du link på dit site som linker VÆK fra dit site så skal det selvf. bare være et alm link uden den der onClik ting, og når brovseren lukkes/ der skrives en anden adresse i adresse feltet vil funktionen være sandt og din logud procedure afvikles!!
Jeg har leget lidt med sessions og har fundet ud af at den følgende kode virker fint til mig:
session_start(); if (isset($_GET['logout'])){ session_unset(); session_destroy(); }
Hvis du skriver et link: <a href="enside.php?logout=yes">Log ud</a> Og brugerne klikker på det virker sessionen ikke mere. Jeg er ikke sikker på om sessiondataene direkte bliver slettet eller hvad. Men i min kode bliver de ihvertfald logget ud. Jeg lægger lige hele min kode med:
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.