Avatar billede funny Nybegynder
23. juli 2003 - 02:26 Der er 7 kommentarer og
1 løsning

online system

Jeg stå og skal bruge et online system til min side det skal kun vise online ikke mere er det en der kan sige mig hvordan jeg gør det på en læt måde
Avatar billede ahv Nybegynder
23. juli 2003 - 02:27 #1
<?php
$connection = mysql_pconnect("host", "user", "pass");
mysql_select_db("database");
$ip = getenv(REMOTE_ADDR);
$tid = date("Y-m-d H:i:s", (time()-600));
mysql_query("DELETE FROM online WHERE tid < '$tid'");
$tjek = mysql_query("SELECT * FROM online WHERE ip='$ip'");
if(mysql_num_rows($tjek) == 0) {
    mysql_query("INSERT INTO online (tid, ip) VALUES (now(),'$ip')");
} else {
    mysql_query("UPDATE online SET tid=now() WHERE ip='$ip'");
}
$online = mysql_query("SELECT COUNT(*) AS antal FROM online");
echo "Der er lige nu ".mysql_result($online,0)." online";
mysql_close($connection);
?>
Avatar billede ahv Nybegynder
23. juli 2003 - 02:30 #2
Princippet går på at den siger på at har man ikke været online i 10 min regnes man som offlines og slettes fra databasen.

Du gjorde ikke opmærsom på i dit spørgsmål om det skulle gøre med eller unden database, mit forslag gør så.

Du kan egentlig dele scriptet op i to dele, første del ->

$ip = getenv(REMOTE_ADDR);
$tid = date("Y-m-d H:i:s", (time()-600));
mysql_query("DELETE FROM online WHERE tid < '$tid'");
$tjek = mysql_query("SELECT * FROM online WHERE ip='$ip'");
if(mysql_num_rows($tjek) == 0) {
    mysql_query("INSERT INTO online (tid, ip) VALUES (now(),'$ip')");
} else {
    mysql_query("UPDATE online SET tid=now() WHERE ip='$ip'");
}

Her tjekker vi om man er i databasen, og om der er nogen som skal slettes, hvis man allerede er i databasen skal vores diste aktive tid bare opateres.

$online = mysql_query("SELECT COUNT(*) AS antal FROM online");
echo "Der er lige nu ".mysql_result($online,0)." online";

Dette udskiver antallet af besøgnede der har været aktive inden for de sidste 10 minutter.
Avatar billede funny Nybegynder
23. juli 2003 - 02:32 #3
okey med hvodan skal databasen se ud
Avatar billede ahv Nybegynder
23. juli 2003 - 02:34 #4
CREATE TABLE `online` (
  `id` int(11) NOT NULL auto_increment,
  `tid` datetime NOT NULL default '0000-00-00 00:00:00',
  `ip` varchar(20) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Avatar billede funny Nybegynder
23. juli 2003 - 02:36 #5
du er bare for cool ahv takker det virker
Avatar billede funny Nybegynder
23. juli 2003 - 02:37 #6
dig kunne jeg godt bruge til min side :),
Avatar billede ahv Nybegynder
23. juli 2003 - 02:37 #7
Så lidt, hvis du ønsker at tiden skal være mindre gøres det blot i denne linie ->
$tid = date("Y-m-d H:i:s", (time()-600));

600 er antallet af sekunder.
Avatar billede funny Nybegynder
23. juli 2003 - 02:40 #8
Har sat den til 10
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Scan Global Logistics

PMO Project Manager

Capgemini Danmark A/S

Microsoft AI Solution Architect

Forsvarsministeriets Materiel- og Indkøbsstyrelse

IT-Sikkerhedsrådgiver til Cyberdivisionen i Hvidovre