login  Naam:   Wachtwoord: 
Registreer je!
 Forum

bij sluiten uitloggen

Offline strikedancer - 06/07/2007 01:57 (laatste wijziging 06/07/2007 04:09)
Avatar van strikedancerOnbekend Hey, ik had een vraagje wat moet ik toe voegen aan mijn script als mensen op kruisje drukken en de browser afsluiten.

Dat de browser nog eerst een uitlog script opent en afhandelt?

6 antwoorden

Gesponsorde links
Offline Nrzonline - 06/07/2007 07:15 (laatste wijziging 06/07/2007 07:17)
Avatar van Nrzonline PHP ver gevorderde Nou, je kunt (zover ik weet) niet iets uitvoeren tijdens het klikken op het kruisje. Zéker niet met PHP (misschien met JavaScript). Maar wat ik begrijp uit jouw vraag, is dat jij naar alle waarschijnlijk je gebruikers laat inloggen m.b.v cookies. Dit zou je kunnen omzetten naar sessions, want die worden niet meer aangeroepen nadat jij je browser (volledig!) hebt afgesloten. Als je toch cookies wilt gebruiken, en deze wilt vernietigen bij het afsluiten van je browser kan je het volgende doen: (in samenwerking met sessions)

  1. <?PHP
  2.  
  3. # Controleren of je de browser hebt verlaten.
  4. # (De $_SESSION['LoginSession'] zou dan namelijk niet meer bestaan)
  5. if (!isset ($_SESSION['LoginSession']))
  6. {
  7. setcookie ("gebruikersnaam", "", (time()-100);
  8. setcookie ("wachtwoord", "", (time()-100);
  9. setcookie ("loginsession", "", (time()-100);
  10. }
  11.  
  12. # Inloggen:
  13. if (inlogscript() == TRUE)
  14. {
  15. if (!isset ($_SESSION['LoginSession']))
  16. {
  17. #Het generen van een "Login Session Key".
  18. $_SESSION['LoginSession'] = time ();
  19. }
  20. setcookie ("gebruikersnaam", $naam, (time()+60*60*24));
  21. setcookie ("wachtwoord", $wachtwoord, (time()+60*60*24));
  22. setcookie ("loginsession", $_SESSION['LoginSession'], (time()+60*60*24));
  23. }
  24. ?>


Maar dat zal nogal dubbelop zijn. Vandaar dat ik je aanraad om dan je 'Login' te doen met sessions ipv cookies.
Offline strikedancer - 06/07/2007 07:26
Avatar van strikedancer Onbekend Hey mijn login is met sessions als het goed is
http://www.plaatscode.be/5881/ 'inlog script'

maar mn leden moeten zo uitloggen anders blijven ze in de tabel hangen,

http://www.plaatscode.be/5882/ 'uitlogscript'
Offline Nrzonline - 06/07/2007 07:46
Avatar van Nrzonline PHP ver gevorderde Ah nu zie ik in je 'uitlogscript' dat je wilt dat de gebruiker uit de lijst wordt gehaald met ingelogde gebruikers.

Dit zal je kunnen doen m.b.v een controle hoelang iemand idled. Je ziet bijvoorbeeld op een phpBB forum dat de actieve leden worden weergegeven van de 'Laatste 30 minuten'. Dit ook omdat je het niet realtime kunt controleren.

Dus je zou kunnen bijhouden per request van een pagina dat hij de gebruikers tabel update met 'laatst_actief' en daar een timestamp in gooien.

  1. <?PHP
  2. # De functie om te updaten...
  3. function update_actief ()
  4. {
  5. $sQuery = "UPDATE online_lijst
  6. SET laatst_actief = " . time () . "
  7. WHERE gebruiker_id = " . $_SESSION['gebruiker_id'];
  8. mysql_query ($sQuery);
  9. }
  10. ?>

Aan het begin van elk bestand:
  1. <?PHP update_actief (); ?>
:

Het bestand waar je weergeeft hoeveel gebruikers er online zijn.
  1. <?PHP
  2. $iVerwijderTijd = (60*15); // 15 minuten
  3.  
  4. /* Dit zou je ook kunnen doen met cronjobs */
  5. $sQuery = "DELETE FROM online_lijst
  6. WHERE laatst_actief < " . (time()-$iVerwijderTijd);
  7. /* einde */
  8. mysql_query ($sQuery) or die (mysql_error ());
  9.  
  10. $sQuery = "SELECT COUNT(id)
  11. FROM online_lijst";
  12. $qSelOnline = mysql_query ($sQuery) or die (mysql_error ());
  13. $iOnline = mysql_result ($qSelOnline, 0);
  14.  
  15. echo $iOnline;
  16. ?>
Offline strikedancer - 06/07/2007 07:54
Avatar van strikedancer Onbekend Oke, maar volgens mij kan ik dat bij mij niet realiseren

want ik heb 2 tabellen
member:
loginName - auto_increment
createDate
password
ect
ect

login:
loginName - auto_increment
loginTime - type:datetime

en volgens mij kan ik daar niet veel mee heb ik het vermoeden?
Offline Nrzonline - 06/07/2007 08:00
Avatar van Nrzonline PHP ver gevorderde Als je er geen tijd in wil steken, goh nee... dan lukt het niet ;)

Je moet de loginTime tabel dus updaten met de laaste activiteit (time()). Oftwerijl de loginTime omzetten naar een INT (intiger) van 11. Als de gebruiker er niet meer in staat (door telang inactief te zijn) er opnieuw in zetten.

Ook bij je login-script moet je even aanpassen dat loginTime = time() ipv date(d/m/y) of wat dan ook.
Offline strikedancer - 06/07/2007 08:04
Avatar van strikedancer Onbekend ik wil er wel tijd in steken ik ben al 240 uur bezig met mijn site

Maar ben nog niet goed bekent met php 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.438s