[PHP] Sessie tijd verlengen (geen dubbel topic ;))

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Ik zag dat er al een topic was over de PHP sessie tijd, maar daar kon ik geen antwoord vinden op mijn probleem. Ik registreer een sessie en deze sessie gebruik ik in de gehele website. Het probleem is dat de sessie al na een half uur verloopt. De sessie registreer ik als volgt:

code:
1
2
3
4
5
6
<?php
$HolodeckSessie->Login = "1";
$HolodeckSessie->Username = $naam;
$HolodeckSessie->Group = $groep;
session_register("HolodeckSessie");
?>


Op internet had ik gevonden dat je de sessie tijd per pagina met de volgende code kan aanpassen.

code:
1
2
3
4
<?php
$de_Tijd = 1 * 12 * 60 * 60;
session_set_cookie_params(time()+$de_Tijd); 
?>


Deze twee regels heb ik boven de bovenste code geplaatst, maar dit werkt niet. Heeft iemand misschien enig idee hoe ik die sessie tijd op 12 uur kan zetten zonder dit op de server aan te passen?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:06

gorgi_19

Kruimeltjes zijn weer op :9

:? Een sessietijd van 12 uur??? Ik denk niet dat een servertje daar erg blij van wordt; iedere bezoeker wordt dus 12 uur 'onthouden'
Een sessietijd van 30 minuten houdt in:
Als een bezoeker 30 minuten geen interactie met de server heeft gehad, dan wordt een sessie vergeten.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Klopt, maar het is voor een interne website waar de gebruikers de website gewoon hebben open staan. Het komt regelmatig voor dat de website een half uur niet gebruikt wordt en dan komen ze bij mij weer klagen dat ze opnieuw moeten inloggen ;)

Acties:
  • 0 Henk 'm!

  • pjonk
  • Registratie: November 2000
  • Laatst online: 22:04
Je kan beter gewoon het sessionid ophalen, opslaan in een eeuwige cookie en al je sessions bijhouden in een zogenaamde login tabel.

Ik heb de volgende code gebruikt voor mijn eigen forum.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Genereer een unieke sessionID en sla deze op in de Database en in een cookie
// Zet expire time cookie hoog zodat je ingelogd blijft
session_start();
$sess_id = session_id();
setcookie ("sessionid", $sess_id, time() + 99999999);

// Sla Session op in de database
// Check of deze sessie al in de database staat
$sql = "SELECT COUNT(*) FROM sessions WHERE SessionID = '$sess_id'";
$result = mysql_query($sql) or report_mysql_error('login_now.php', $sql);
$count = mysql_result($result, 0);
if ($count == 0) {
    $sql = "INSERT INTO sessions (SessionID,UserID) VALUES ('$sess_id',$user_id)";
} else {
    $sql = "UPDATE sessions SET UserID = $user_id WHERE SessionID='$sess_id'";
}

$result = mysql_query($sql) or report_mysql_error('login_now.php', $sql);

It’s nice to be important but it’s more important to be nice


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:06

gorgi_19

Kruimeltjes zijn weer op :9

Eventueel een simpele workaround, waarbij je je sessietijd ook niet zo gruwelijk lang hoeft te bewaren...

Stop in een pagina na erhmm 29*60+30 seconden een refresh.Het voorbeeld wat je gaf gaat volgens mij niet werken; dit is de geldigheidstijd van cookies (het kan zijn dat ik verkeerd zit; PHP is heel lang geleden voor mij.. :P )

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28

Bosmonster

*zucht*

Verwijderd schreef op 30 November 2002 @ 11:55:
Klopt, maar het is voor een interne website waar de gebruikers de website gewoon hebben open staan. Het komt regelmatig voor dat de website een half uur niet gebruikt wordt en dan komen ze bij mij weer klagen dat ze opnieuw moeten inloggen ;)


En op zo'n moment is het tijd om deze verantwoordelijkheid naar de client te sturen... clientside cookies dus...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als eerst bedankt voor de oplossingen. Ik weet alleen niet zeker of het helemaal lekker werkt met cookies aangezien de computer compleet dichtgetimmerd zijn en iedereen onder z'n eigen profiel inlogd.

/me gaat eerst patat halen, ik zie het niet meer zitten ;)
Pagina: 1