Versio

Sessie verlooptijd

Overzicht Reageren

Wout van der Burg

Wout van der Burg

10/11/2009 10:45:00
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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();
    }    
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
 
PHP hulp

PHP hulp

25/05/2012 15:35:46
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
- SanThe -

- SanThe -

10/11/2009 13:19:00
Quote Anchor link
Waarom check je mysql_error() op ""?
Error checken kan beter zo.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$rstime
= mysql_query($sqltime);
if(!$rstime)
{

     // error
}
?>


if (substr($tijdverschil,0,1) == '-' ) {
Is dit niet gewoon een negatief getal? Dan kan je toch gewoon vergelijken met 0 (nul).
 
Wout van der Burg

Wout van der Burg

10/11/2009 13:56:00
Quote Anchor link
$tijdverschil is een tijdaanduiding (00:00:00) (dus geen timestamp), dus het is geen getal.. :)

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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();
    }    
}

?>
 



Overzicht Reageren

Get Adobe Flash player