Avatar billede william11 Nybegynder
30. marts 2005 - 11:34 Der er 12 kommentarer og
1 løsning

Hjælp til '$_SESSION timeout?

hejsa alle sammen.. :D jeg har lavet en side nu og mangler bare at finde ud af hvordan man laver en session timeout, vil gerne have det sådan at hvis man ikke har været aktiv på siden i 15 min så logger den automatisk ud, også bliver man nød til at logge på igen... nogle som ved hvordan det laves og kan skrive koden? står og mangler den her og nu, håber der er nogle som kan hjælpe!

// William11
Avatar billede bromer Nybegynder
30. marts 2005 - 11:38 #1
Jeg plejer at sætte en cookie med de nuværende timestamp og så - når en side bliver reloaded - undersøge hvorvidt det timestamp er ændre end 15 minutter og så logge folk af.

Du kan samtidig få siden til at reloade efter 15 min og 1 sekund ved at smide en HTTP-EQUIV i dit dokument. Dette vil skabe en "auto-udlogger".
Avatar billede william11 Nybegynder
30. marts 2005 - 11:39 #2
kunne du evt, vise hvordan coden ser ud?...:$ for har ikke rigtig nogen andelse hvordan det skal være...
Avatar billede bromer Nybegynder
30. marts 2005 - 11:41 #3
Hvis du vil have koden så ville jeg indsætte følgende på hver side:

<?
function logoff() {
// do your stuff
}

if (isset($_COOKIE['logout_timestamp']) && $_COOKIE['logout_timestamp']+60*60*15 < time()) {
logoff();
} else {
setcookie('logout_timestamp',time(),time()*2);
}
?>

Derudover ville jeg indsætte:

<META HTTP-EQUIV="Refresh" CONTENT="<?=60*60*15+1;?>;URL=<?=$_SERVER['PHP_SELF'];?>">
Avatar billede bromer Nybegynder
30. marts 2005 - 11:50 #4
Jeg har lige testet følgende på min egen installation. Du kan bare sæte time efter dit behov. Jeg har - da jeg skulle teste og ikke gad vente 15 min - sat timeout til 15 sekunder.

Du skal naturligvis lige modificere koden så du fanget $_GET['logoff'] og får logget brugeren ud af systemet.

<?
$time = 15;

if (isset($_COOKIE['logout_timestamp']) && $_COOKIE['logout_timestamp']+$time < time()) {
        setcookie('logout_timestamp','',time()-1);
        header("Location: " . $_SERVER['PHP_SELF'] . "?logoff");
}
setcookie('logout_timestamp',time(),time()*2);

?>

<META HTTP-EQUIV="Refresh" CONTENT="<?=$time+1;?>;URL=<?=$_SERVER['PHP_SELF'];?>?refreshed">
Avatar billede bromer Nybegynder
30. marts 2005 - 11:53 #5
Du kan også få din session til kun at lave i 15 minutter, hvis du før session_start() benytter session_set_cookie_params() funktionen. Der kan du sætte levetiden på de cookies sessionssystemet benytter.

[1] http://www.php.net/manual/en/function.session-set-cookie-params.php
Avatar billede bromer Nybegynder
30. marts 2005 - 11:56 #6
Du bør også - for komplethedens skyld - læse følgende link: http://www.php.net/manual/sv/function.session-cache-expire.php
Avatar billede william11 Nybegynder
30. marts 2005 - 12:40 #7
hejsa.. :D har prøvet at lave den der med session_set_cookie_params, men ved bare ikke helt hvad det der (yourpath) betyder, ved ikke helt hvad jeg skal indsætte der... ved du det?
session_set_cookie_params (0, '/yourpath/');
Avatar billede bromer Nybegynder
30. marts 2005 - 12:41 #8
Det behøver du jo ikke at sætte. Virker det hvis du kun angiver en timeout?
Avatar billede william11 Nybegynder
30. marts 2005 - 12:45 #9
nej den logger ikke rigtig en af...
har skrevet den sådan her, ps. siden er lavet på 1 index fil.... bare for at vide om det kan gøre en fordel/upempe?:)
---------------

session_set_cookie_params (0, 15);
session_start();
;

$expiry = 60*60*15;
session_start();
setcookie(session_name(),session_id(), time()+$expiry, "/");
Avatar billede bromer Nybegynder
30. marts 2005 - 12:49 #10
Øhm.. hvis det er lavet på een fil så kan du for det første benytte den løsning ved at sætte en cookie som jeg skrev tidligere. For det andet angiver du 0 som timeout og 15 som path til session_set_cookie_params hvilket er mærkeligt. Prøv istedet:

$expire = 60*60*15;
session_set_cookie_params ($expire);
session_start()
Avatar billede william11 Nybegynder
30. marts 2005 - 12:57 #11
min fejl havede ikke lige slettet det hele da jeg kopiret det.. :$ men ser ud til at den virker...... www.psd-world.dk, kan du se en tester(ikke lige der den skal være på, men har tester på den!) øhmm.... ja tror det virker... så hvis du lige smider et svar så får du dine points...:P
Avatar billede bromer Nybegynder
30. marts 2005 - 12:59 #12
mange tak
Avatar billede william11 Nybegynder
30. marts 2005 - 13:00 #13
Det er mig som takker...:P
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester