Wie is er ingelogd?

Status
Niet open voor verdere reacties.

jeroendenoot

Terugkerende gebruiker
Lid geworden
14 mrt 2005
Berichten
1.492
Hallo allemaal,
Ik ben bezig met een inlog-systeem. Ik ben heel simpel begonnen maar ik ga het steeds meer uitbreiden. Nu wil ik graag dat iedereen kan zien welke gebruikers zich hebben ingelogd, dus die op dat moment 'online' zijn. Ik maak gebruik van een inlog-systeem met sessions, ik kan werken met MySQL en PHP, en ik heb een account bij de gratis host farvista.net (www.100webspace.com).

Zou iemand mij kunnen helpen?
 
Laatst bewerkt:
Sla in je database alle userid's op met een tijd waarop ze het laatst vernomen werden (dat is dus de tijd waarop ze voor het laatst een paginarequest maakten). Als deze tijd groter is dan bijv. 5 minuten, dan zijn ze waarschijnlijk van je website af.
Geplaatst door hanna
Stuur het script maar naar mij, dan kijk ik voor je.

nivako@zonnet.nl
Hoe goed je het ook bedoeld, da's niet helpen maar gewoonweg voorkauwerij.
 
Tja, misschien heb je wel gelijk, maar was goed bedoelt hoor!!
 
Hallo, ik ben eerst aan het proberen om de datum en tijd op te slaan, maar het lukt niet helemaal. Ik heb nu dit helemaal bovenaan elke pagina van mijn site staan, maar het werkt niet:

PHP:
<?php
session_start();
if($_SESSION["gebruikersnaam"]){
$gebruikersnaam = $_SESSION["gebruikersnaam"];
$datumtijd = date("d-m-Y H:i");
mysql_connect("host","gebruikersnaam","wachtwoord");
mysql_select_db("databasenaam");
$query = "UPDATE gebruikers SET laatstgesignaleerd = '" . $datumtijd . "' WHERE gebruikersnaam = '" . $gebruikersnaam . "'";
mysql_query($query);  
}
?>

Weet iemand hoe het komt dat het niet werkt?
 
Laatst bewerkt:
Ik weet al hoe het komt. Ik moet de namen ook tussen aanhalingstekens zetten. Zo dus:

PHP:
$query = "UPDATE 'gebruikers' SET 'laatstgesignaleerd' = '" . $datumtijd . "' WHERE 'gebruikersnaam' = '" . $gebruikersnaam . "'";

Oké, dat is nu gelukt. Nu ga ik kijken of het lukt de gebruikers die de laatste 5 minuten gesignaleerd zijn weer te geven.
 
Laatst bewerkt:
PHP:
if($_SESSION["gebruikersnaam"]){
If .. wat ?

PHP:
mysql_query($query);
naar
PHP:
mysql_query($query) or die (mysql_error());
Zo zie je een sql error als er iets fout gaat in je query's
 
Bedankt. Ik ben nog steeds bezig met het weergeven van de gebruikers die de laatste 5 minuten gesignaleerd zijn.
 
Dat is nu ook gelukt. Zo heb ik het gedaan:

PHP:
       <?php
$dag = date("d");
$maand = date("m");
$jaar = date("Y");
$uur = date("H");
$minuut = date("i");
$datumtijd1 = date("d-m-Y H:i", mktime($uur, $minuut, 00, $maand, $dag, $jaar));
$datumtijd2 = date("d-m-Y H:i", mktime($uur, $minuut-1, 00, $maand, $dag, $jaar));
$datumtijd3 = date("d-m-Y H:i", mktime($uur, $minuut-2, 00, $maand, $dag, $jaar));
$datumtijd4 = date("d-m-Y H:i", mktime($uur, $minuut-3, 00, $maand, $dag, $jaar));
$datumtijd5 = date("d-m-Y H:i", mktime($uur, $minuut-4, 00, $maand, $dag, $jaar));

mysql_connect("host","inlognaam","wachtwoord");
mysql_select_db("databasenaam");
$query = "SELECT * FROM leerlingen WHERE laatstgesignaleerd = '" . $datumtijd1 . "' OR laatstgesignaleerd = '" . $datumtijd2 . "' OR laatstgesignaleerd = '" . $datumtijd3 . "' OR laatstgesignaleerd = '" . $datumtijd4 . "' OR laatstgesignaleerd = '" . $datumtijd5 . "' ORDER BY naam";
$gegevens = mysql_query($query);
print '<ul>';
while($gegeven = mysql_fetch_object($gegevens)) { 
print'<li>' . $gegeven->naam . '</li>'; 
}
print '</ul>';
      ?>

Maar nu doet het opslaan van datum en tijd in de database het ineens niet meer. Ik snap daar niets van. Ik ga morgen verder kijken...
 
Laatst bewerkt:
Ik weet dat de vraag is opgelost, maar ik zou graag willen zeggen dat met de functie 'time()' werken misschien makkelijker is.

Je zet de tijd in seconden in de database (van waneer de pagina het laatst is opgevraagd) (de tijd in seconden sinds 1970 ofzo..). Als je wilt weten hoeveel mensen online zijn kijk je bij hoeveel mensen de tijd op dit moment + (5 * 60) kleiner of gelijk is aan de tijd in de database:
PHP:
$query = mysql_query('SELECT count(*) FROM tabel WHERE laatst_actief >= "'.(time()-(5*60)).'"');
misschien dat het makkelijker is....

JB'tje
 
Oké bedankt. Maar ik ga eerst de andere dingen van m'n site afmaken. Als ik nog tijd over heb ga ik dit nog wel veranderen. De site is namelijk voor de klas waar ik volgend jaar in kom. Over 2 weken begint de school alweer dus de tijd dringt!
 
Geplaatst door Nivko
Maak altijd van je Wachtwoorden/User XXX ! :evil:

Ten eerste is dit alleen voor een moment grappig, waarna je alles weer zou moeten veranderen omdat je toch wel de mensen op je site wil houden.

Ten tweede heb je kans dat je mooie grote errors in je database krijgt, omdat je duplicates hebt.
 
Ik bedoel als je hier een script post dat je je wachtwoorden even anders moet maken m8 :)
 
Dat doe ik anders altijd wel, ik schrok er zelf van. Ik heb het maar snel aangepast. (Ik hoop dat niemand er iets mee gaat doen die het gezien heeft...)
 
Geplaatst door killermenace


Ten eerste is dit alleen voor een moment grappig, waarna je alles weer zou moeten veranderen omdat je toch wel de mensen op je site wil houden.

Ten tweede heb je kans dat je mooie grote errors in je database krijgt, omdat je duplicates hebt.
Wot the fok ?

Wat is dat nou weer voor 'n bulltihs. Je kan je wachtwoorden toch wel gewoon veranderen als je een script openbaar maakt. En waarom is dit alleen op 'n grappig moment ? Ik vind het prima van 'm dat ie even meld dat er wachtwoorden in staan.

Jonge jonge :confused:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan