Sessie verlooptijd
Ik ben op dit moment bezig met een scriptje, waarbij ik in de database bijhoud hoe lang iemand is ingelogd. Als de aflooptijd is verstreken, moet de gebruiker opnieuw inloggen, door hem door te sturen met de header();
Dit controleer ik aan de hand van het feit of de waarde 'tijdverschil' uit de database een negatieve waarde is. Ik twijfel nu aan of ik dit goed doe, want overdag geeft het ook geen problemen, maar 's-avonds (lijkt tot een uur of 20.00/21.00 goed te gaan) geeft hij hier problemen mee.
Ziet iemand of ik hier iets fout doe of heeft iemand tips over hoe het beter zou kunnen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// Controleren van tijdverschil adhv van laatste activiteit en de verlooptijd
$sqltime = "SELECT ".SES_ID.", ".SES_DATE.", TIMEDIFF(TIME(".SES_VERLTIJD."),TIME(NOW())) AS tijdverschil FROM ".SESSIE." WHERE id = ".$_SESSION['inlogid'];
// run query
$rstime = mysql_query($sqltime);
$rserror2 = mysql_error();
if (trim($rserror2) != '') { die(logerror($username,addslashes($rserror2)." expire_checker.php line 7")); }
// opvangen tijdverschil tussen beide
while ($rowtime = mysql_fetch_array($rstime)) {
$tijdverschil = trim($rowtime['tijdverschil']);
if (substr($tijdverschil,0,1) == '-' ) {
// ga naar inlog-pagina
logerror($username,"Verlopen in expire_checker.php op line 14 (tijddifferentieel ".$tijdverschil.")");
header("Location: login.php?wt=expired");
exit();
}
}
?>
// Controleren van tijdverschil adhv van laatste activiteit en de verlooptijd
$sqltime = "SELECT ".SES_ID.", ".SES_DATE.", TIMEDIFF(TIME(".SES_VERLTIJD."),TIME(NOW())) AS tijdverschil FROM ".SESSIE." WHERE id = ".$_SESSION['inlogid'];
// run query
$rstime = mysql_query($sqltime);
$rserror2 = mysql_error();
if (trim($rserror2) != '') { die(logerror($username,addslashes($rserror2)." expire_checker.php line 7")); }
// opvangen tijdverschil tussen beide
while ($rowtime = mysql_fetch_array($rstime)) {
$tijdverschil = trim($rowtime['tijdverschil']);
if (substr($tijdverschil,0,1) == '-' ) {
// ga naar inlog-pagina
logerror($username,"Verlopen in expire_checker.php op line 14 (tijddifferentieel ".$tijdverschil.")");
header("Location: login.php?wt=expired");
exit();
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
Error checken kan beter zo.
if (substr($tijdverschil,0,1) == '-' ) {
Is dit niet gewoon een negatief getal? Dan kan je toch gewoon vergelijken met 0 (nul).
Voor de errorafhandelign heb je gelijk, heb ik ook even aangepast :) bedankt!
Ik ben er overigens uit met mijn echte probleem;
De TIMEDIFF was niet goed gedefinieerd wanneer er 's-avonds de datumverandering aan zit te komen.. (ik vergeleek alleen met tijden, niet met datums én tijden..)
Dit heb ik nu zo opgelost;
Code (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
30
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
30
<?php
$sql = "SELECT ".SES_IP.", ".SES_VERLDATE." , ".SES_VERLTIJD." FROM ".SESSIE." WHERE id = ".$_SESSION['inlogid']." ORDER BY id DESC LIMIT 0,1";
// run query
$rs = mysql_query($sql);
$rserror = mysql_error();
if (!$rserror) { die(logerror($username,addslashes($rserror)." checker.php line 6")); }
// vang waarden op uit actieve sessie
$verloopdatum = "";
$verlooptijd = "";
while ($row = mysql_fetch_array($rs)) {
$verloopdatum = $row[SES_VERLDATE];
$verlooptijd = $row[SES_VERLTIJD];
}
$sqltime = "SELECT ".SES_ID.", ".SES_DATE.", TIMEDIFF('".$verloopdatum." ".$verlooptijd."', '".date('Y-m-d G:i:s')."') AS tijdverschil FROM ".SESSIE." WHERE id = ".$_SESSION['inlogid'];
// run query
$rstime = mysql_query($sqltime);
$rserror2 = mysql_error();
if (!$rserror2) { die(logerror($username,addslashes($rserror2)." checker.php line 18")); }
// opvangen tijdverschil tussen beide
while ($rowtime = mysql_fetch_array($rstime)) {
$tijdverschil = trim($rowtime['tijdverschil']);
if (substr($tijdverschil,0,1) == '-' ) {
// ga naar inlog-pagina
logerror($username,"Verlopen in checker.php op line 25 (tijddifferentieel ".$tijdverschil.")");
header("Location: login.php?wt=expired");
exit();
}
}
?>
$sql = "SELECT ".SES_IP.", ".SES_VERLDATE." , ".SES_VERLTIJD." FROM ".SESSIE." WHERE id = ".$_SESSION['inlogid']." ORDER BY id DESC LIMIT 0,1";
// run query
$rs = mysql_query($sql);
$rserror = mysql_error();
if (!$rserror) { die(logerror($username,addslashes($rserror)." checker.php line 6")); }
// vang waarden op uit actieve sessie
$verloopdatum = "";
$verlooptijd = "";
while ($row = mysql_fetch_array($rs)) {
$verloopdatum = $row[SES_VERLDATE];
$verlooptijd = $row[SES_VERLTIJD];
}
$sqltime = "SELECT ".SES_ID.", ".SES_DATE.", TIMEDIFF('".$verloopdatum." ".$verlooptijd."', '".date('Y-m-d G:i:s')."') AS tijdverschil FROM ".SESSIE." WHERE id = ".$_SESSION['inlogid'];
// run query
$rstime = mysql_query($sqltime);
$rserror2 = mysql_error();
if (!$rserror2) { die(logerror($username,addslashes($rserror2)." checker.php line 18")); }
// opvangen tijdverschil tussen beide
while ($rowtime = mysql_fetch_array($rstime)) {
$tijdverschil = trim($rowtime['tijdverschil']);
if (substr($tijdverschil,0,1) == '-' ) {
// ga naar inlog-pagina
logerror($username,"Verlopen in checker.php op line 25 (tijddifferentieel ".$tijdverschil.")");
header("Location: login.php?wt=expired");
exit();
}
}
?>