Uitloggen...
uit ;-)!
Iemand die me kan helpen...?!
Ik veronderstel dat het met JS is etc.
Alvast bedankt ;-)!
Gewijzigd op 01/01/1970 01:00:00 door DeleteAll DeletelAll
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Robert, php = serverside, dus dit gaat niet werken ;-)
Gewoon een php file schrijven die de akties uitvoerd die jij wilt, en javascript gebruiken om deze te openen
<body onunload="location.href='logout.php'">
-- Edit --
Gemeen dit, ga ik een antwoord typen + koffie halen... Kom ik terug, druk op opslaan... heeft iemand anders het juiste antwoord al gegeven :(
Gewijzigd op 01/01/1970 01:00:00 door Rens nvt
met dit simpele scriptje kan je wel testen, het werkt prima ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
session_start();
//als sessie nog niet bestaat dan:
if(!isset($_SESSION['test'])){
$_SESSION['test'] = "De sessie bestaat";
}
else{//als de sessie al bestond
$_SESSION['test'] = "De sessie bestond al!!";
}
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body onUnload="<?php session_destroy(); ?>">
<?php echo $_SESSION['test']; ?>
</body>
</html>
session_start();
//als sessie nog niet bestaat dan:
if(!isset($_SESSION['test'])){
$_SESSION['test'] = "De sessie bestaat";
}
else{//als de sessie al bestond
$_SESSION['test'] = "De sessie bestond al!!";
}
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body onUnload="<?php session_destroy(); ?>">
<?php echo $_SESSION['test']; ?>
</body>
</html>
Test eens zo, (refresh een paar keer), haal dan de onUnload tag weg, en probeer het nog eens.
Het werkt perfect bij mij.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
de sessie bestaat
de sessie bestond al
de sessie bestond al
de sessie bestond al
..
..
..
Wat me overigens wel opviel, is dat het ook fout gaat als je gewoon van pagina wisseld. Dus als je een link hebt en je hele pagina wordt opnieuw geladen ben je hem ook kwijt.
dat geld ook voor het andere script, dus dit zal naar alle waarschijnlijkheid ookk niet werken.
Bij het parsen van de pagina komt de php parser session_destroy(); tegen, en doet dit dus.
Dit heeft niks te maken met het unloaden van de pagina, de sessie wordt eerst geset, daarna geunset, en daarna geechood dat ie niet bestaat ;-)
Doe de aanname dat iemand minimaal eens in de x-aantal minuten een actie moet doen om ingelogd te blijven. Is er x-aantal minuten geen response van de gebruiker geweest, dan log je hem uit. Een DATETIME in de database die je bij iedere actie update, kan je hierbij behulpzaam zijn. Zie verder hoofdstuk 12.5 van de MySQL-handleiding voor de diverse datum- en tijdsfuncties die je nodig hebt.
Maar ik wil dat als je de pagina afsluit hij je gaat uitloggen ;-)!
Dit is mijn frameset pagina, maar hij doet het niet ;-)!
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Castellemmare</title>
</head>
<frameset rows="95,*" frameborder="yes" border="1" framespacing="0">
<frame src="header.php" name="header" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" />
<frameset rows="*" cols="150,*" frameborder="yes" border="1" framespacing="0">
<frame src="menu.php" name="menu" scrolling="yes" noresize="noresize" id="leftFrame" title="leftFrame" />
<frameset rows="*,70" frameborder="yes" border="1" framespacing="0">
<frame src="algemeen/main.php" name="main" id="mainFrame" scrolling="yes" title="mainFrame" />
<frame src="footer.php" name="footer" scrolling="No" noresize="noresize" id="bottomFrame" title="bottomFrame" />
</frameset>
</frameset>
</frameset><noframes>
<body onunload="location.href='logout.php'">
</body>
</noframes></html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Castellemmare</title>
</head>
<frameset rows="95,*" frameborder="yes" border="1" framespacing="0">
<frame src="header.php" name="header" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" />
<frameset rows="*" cols="150,*" frameborder="yes" border="1" framespacing="0">
<frame src="menu.php" name="menu" scrolling="yes" noresize="noresize" id="leftFrame" title="leftFrame" />
<frameset rows="*,70" frameborder="yes" border="1" framespacing="0">
<frame src="algemeen/main.php" name="main" id="mainFrame" scrolling="yes" title="mainFrame" />
<frame src="footer.php" name="footer" scrolling="No" noresize="noresize" id="bottomFrame" title="bottomFrame" />
</frameset>
</frameset>
</frameset><noframes>
<body onunload="location.href='logout.php'">
</body>
</noframes></html>
Je kunt nooit PHP script gebruiken in client-side events, zoals mouseovers, onload of onunload. Je moet namelijk het uitvoeren van het PHP script uitstellen tot je hebt vastgesteld dat het event plaatsvond... En aangezien je PHP uitvoerd voordat de browser de pagina ontvangt...
de optie <body onunload="location.href=logout.php"> zorgt ervoor dat logout.php wordt aangeroepen als de body "geunload" wordt.
Het is trouwens wel zo dat elke browser op zijn eigen manier omgaat met events... in firefox werkt het bij mij bijvoorbeeld niet, maar in Internet Explorer blijkt het wel te werken (http://blogs.x2line.com/al/articles/756.aspx)
Gewijzigd op 01/01/1970 01:00:00 door DeleteAll DeletelAll
je hebt blijkbaar al een tabel in je database waar je sessies in hebt staan, sla hier dan gewoon het session_id in op. Wanneer iemand zijn browser afgesloten heeft, en de pagina opnieuw opent, zal hij opnieuw in moeten loggen.
wanneer je wilt dat mensen worden uitgelogd als ze een andere pagina openen, zonder de browser te sluiten, kun je onunload gebruiken. let wel dat deze in een <body> element moet staan, en dus niet in je frameset kan staan.
maar, hou in je achterhoofd dat het nooit 100% gegarandeerd is dat iedereen ook daadwerkelijk uitgelogd wordt
Gewijzigd op 01/01/1970 01:00:00 door Rens nvt
Dan doe je in een SQL tabel een DATETIME veld
En ga je de huidige tijd aftrekken met die van die DATETIME veld is dit groter dan 5 seconden dan is ie dus weg van de website
Zo niet dan is ie online
Het enigste nadeel is dan wel dat bij mensen die een slome computer hebben de site erg traag word of zelfs vast kan lopen daarom is het mischien handig om om de 30 seconden de pagina op de achtergrond te herladen en wanneer de huidige tijd 40 seconden verschilt met die van de DATETIME veld is ie dus offline
Nog een nadeel javascript kan uitgezet worden
Mischien handig om daarvoor nog een check te maken of diegene javascript heeft aan staan of niet
GR. mebus
uhm ik heb ooit een script hiervoor gezien, serverside raargenoeg, en het werkt ook als je de pc uitzet volgens mij. ik ga even zoeken...
(Eerder kon dacht ik niet)