[PHP] Sessions verloopt op random momenten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 15:23

me1299

$ondertitel

Topicstarter
Ik heb apache en php draaien onder netware 6.

PHP werkt opzich perfect alleen doet het zich voor dat op een random moment opeens mijn sessie verloopt.

Soms kan ik een uur in de site bezig zijn en gaat dat gewoon goed en soms is mijn sessie opeens spontaan verlopen.

Ik gebruik de volgende code voor gebruikersvalidatie:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

include("../includes/config.inc.php");
include("../includes/functions.inc.php");

$query = "select * from users where username='{$_POST['user']}' and password='{$_POST['pass']}'";
$result = mysql_query($query);
$fetch = mysql_fetch_assoc($result);
$num_rows = mysql_num_rows($result);

if($num_rows > 0) {
    session_start();
    $_SESSION['session_key'] = session_id();

    $query = "insert into sessions values(NULL, {$fetch['pkUserID']}, '{$_SESSION['session_key']}', '{$_SERVER['REMOTE_ADDR']}', ". time(). ")";
    mysql_query($query);
    header("Location: ../index.php");
} else {
    print("<script>alert(\"Gebruikersnaam of wachtwoord onjuist!\"); location.replace(\"../index.html\"); </script>");
    die();
}

?>


Vervolgens heb ik een include file voor elke pagina die als volgt luid:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php

session_start();
session_cache_limiter('private, must-revalidate');

if(!isset($_SESSION['session_key'])) {
    session_destroy();
    header("Location: {$html_path}index.html");
    die();
}

$query = "select * from users, usergroups, sessions where users.kUsergroupID = usergroups.pkUsergroupID and sessions.kUserID = users.pkUserID and sessions.session_key = '{$_SESSION['session_key']}' order by pkSessionID desc limit 1";
$result = mysql_query($query);

if(mysql_num_rows($result) < 1) {
    session_destroy();
    header("Location: {$html_path}index.html");
    die();
}

$fetch = mysql_fetch_assoc($result);

$_SESSION['pkUserID'] = $fetch['pkUserID'];
$_SESSION['username'] = $fetch['username'];
$_SESSION['fullname'] = $fetch['fullname'];
$_SESSION['level'] = $fetch['level'];
$_SESSION['levelname'] = $fetch['usergroup'];

?>


Om mijn server thuis (win2k apache 2) heb dezelfde problemen niet.

Iemand een idee of het aan mijn php code ligt? Of heeft het echt met de server te maken?

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Als je de problemen thuis niet hebt dan is het toch duidelijk dat het aan de server ligt?

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

  • Morax
  • Registratie: Mei 2002
  • Laatst online: 17-09 12:51
Een session verloopt na een bepaalde tijd, standaard 20 minuten geloof ik. Dan verwijderd de server je session data. Als je dus 25 minuten lang een bericht oid leest, is je sessie dus verlopen. Weet je zeker dat je niet al te lang zit te lezen/werken/wat dan ook, zonder actief van pagina's te wisselen??
Zo ja, dan zal je waarschijnlijk met cookies moeten gaan werken.

Misschien dat op de server waarop je hem gehost hebt, de tijdsduur van een sessie lager is. Er was een commando voor om alle PHP-gegevens op te vragen, (zal ik zo ff opzoeken) waar je dus als het goed is ook kan zien na hoeveel tijd een sessie verloopt.

What do you mean I have no life? I am a gamer, I got millions!


Acties:
  • 0 Henk 'm!

Verwijderd

<? phpinfo() ?>

Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 15:23

me1299

$ondertitel

Topicstarter
Morax schreef op 29 August 2003 @ 14:18:
Een session verloopt na een bepaalde tijd, standaard 20 minuten geloof ik. Dan verwijderd de server je session data. Als je dus 25 minuten lang een bericht oid leest, is je sessie dus verlopen. Weet je zeker dat je niet al te lang zit te lezen/werken/wat dan ook, zonder actief van pagina's te wisselen??
Zo ja, dan zal je waarschijnlijk met cookies moeten gaan werken.

Misschien dat op de server waarop je hem gehost hebt, de tijdsduur van een sessie lager is. Er was een commando voor om alle PHP-gegevens op te vragen, (zal ik zo ff opzoeken) waar je dus als het goed is ook kan zien na hoeveel tijd een sessie verloopt.
soms als ik inlog verloopt m'n sessie al na 10 seconden. Dus dat lijkt me niet.

Ik heb ook al in de php.ini gekeken op de server maar dat stond verder wel goed.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
je session garbage collection heeft elke nieuwe pageload een kans van X op 100 (in te stellen in de php.ini) dat ie gaat draaien.

Kijk daar eens naar, misschien ligt et daaraan...


[edit]
session.gc_dividend
session.gc_maxlifetime
session.gc_probability

Nadat session.gc_maxlifetime is verlopen, heb je een kans van session.gc_probability/session.gc_dividend per pageload dat je session weg wordt gegooid

[ Voor 40% gewijzigd door Grijze Vos op 29-08-2003 15:21 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1