Top
Phpuniverset logo
 

INDHOLD

Forside

Job annoncer

Tips og Tricks

Konkurrence

Downloads

Dokumenter

PHP bog shop

Forum

Online udviklere


Propelcom

ARTIKLER

CSS

Diverse

E-handel / annoncer

Grafik

Html

Internet

Javascript

Linux

PHP/MySQL

Programmer

Flash

Søgemaskiner

Windows

C / C++


INFO

Information

Annoncering

Kontakt

Online tæller i PHP & MySQL

Forside Kategori PHP/MySQL Online tæller i PHP & MySQL




 

Den følgende artikel vil gennemgå opbygningen af en simpel ’online tæller’, hvor MySQL ordner alt det administrative arbejde. Artiklen forudsætter basalt kendskab til PHPMyAdmin.


Der findes ikke mange ’store’ sider rundt om på www, hvor brugerne på en eller anden måde kan kommunikere med hinanden og der ikke findes en tæller der tæller antallet af online brugere lige nu. Den logiske opbygning af en sådan tæller er ikke så kompliceret, men måske kan kodedelen hænge for nogen, hvilket jeg vil prøve at hjælpe med i denne artikel/guide.
Jeg vil gennemgå de forskellige trin i scriptet undervejs. Først skal vi have oprettet en tabel i vores MySQL database, tabellen skal have følgende struktur:

CREATE TABLE `online` (
`id` int(11) NOT NULL auto_increment,
`time` datetime NOT NULL default '0000-00-00 00:00:00',
`ip` varchar(20) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Tabellen har jeg valgt at kalde online, hvilket jeg finder logisk. Tabellen indeholder 3 felter.
(id) det er fortløbende og tabellens primær nøgle.
(time) holder styr på hvornår brugeren sidst har været aktiv.
(ip) indeholder brugerens ip, hvilket bruges til at genkende brugeren.

I det følgende kan ses selve scriptet, som vil være kommenteret løbende. Kommentarerne til scriptet vil være indrammet af /*…*/

<?php
/* Vi connecter til databasen. */
$connection = mysql_pconnect("host", "user", "pass");
mysql_select_db("database");

/* Brugerens ip-adresse gemmes i variablen $ip. */
$ip = $_SERVER['REMOTE_ADDR'];

/* Vi tjekker om brugeren allerede findes i tabellen. */
$tjek_ip = mysql_query("SELECT COUNT(*) AS antal FROM online WHERE ip='$ip'") or die(mysql_error());

/* Hvis brugeren ikke findes i tabellen, vil brugeren blive oprettet der, med den nuværende tid og brugerens ip. Hvis brugerens tid allerede findes i tabellen, vil denne blot blive opdateret. Der tages ikke højde for vekslende ip’er */
if(!mysql_result($tjek_ip,0)) {
mysql_query("INSERT INTO online (time, ip) VALUES (NOW(),'$ip')") or die(mysql_error());
} else {
mysql_query("UPDATE online SET time=NOW() WHERE ip='$ip'") or die(mysql_error());
}

/* Vi sletter alle brugere fra online-listen der ikke har været aktive i 5 min. Jeg synes 5 min. er passende, men antallet af min kan ændres ved simpelt at ændre 5 MINUTE til det antal min. man ønsker. */
mysql_query("DELETE FROM online WHERE date_add(time,interval 5 MINUTE) < NOW()") or die(mysql_error());

/* Vi tæller antallet af brugere/rækker i tabellen */
$antal_online = mysql_query("SELECT COUNT(*) AS antal FROM online") or die(mysql_error());

/* Vi udskriver det fundne antal brugere/rækker i en echo */
echo "Der er lige nu ".mysql_result($antal_online,0)." online";

/* Til sidst lukker vi forbindelsen til MySQL-databasen */
mysql_close($connection);
?>

Skrevet af: ahv@it.dk



Skrevet af: ahv@it.dk| Dato : 2004-02-18 11:4 | Læst : 20162 gange | Print

Din kommentar og karakter til artiklen

Din karakter:

1

2

3

4

5

6

7

8

9

10

Kommentar:

Log ind for at give en karakter og kommentar.

Kommentarer og karakterer til artiklen

 


8/10

"Great Job d(-_-)b rram"

Rasmus | 06.01.2008, 00:01

 


1/10

"Prøv og gør sådan man kan se koderne i stedet for og sætte dem oven i teksten!"

Nicklas | 31.07.2006, 13:46

 

Send Artikel/anmeldelse til: phpuni@phpuniverset.dk

Tilbage til oversigt

FORUM

Nyeste forum indlæg :

PHP/Opencart import module

Opencart/php import modul hjælp

Lækkert kontor / kontorfællesskab i Helsingør

Opdatering af PHP

Vurdering af hjemmeside

Nyeste forum svar :

Lækkert kontor / kontorfællesskab i Helsingør

Android programmering

Joomla som CMS

Grafik problemer

Prissammenligningsside

 

MEDLEM

LOGIN ER IKKE MULIGT, MENS VI LAVER NYT SITE
 

NYHEDSBREV

Nyhedsbrev

Tilmeld dig vores nyhedsbrev og modtag nyheder om nye scripts og tips samt om mange andre nye tiltag på Phpuniverset.dk


 

© Copyright 2000 Propelcom Phpuniverset's politik om personlige oplysninger, artikler & Koder Phpuniverset er optimeret til Mozilla 1024 * 768 Phpuniverset version: 3.0 beta
Webhost : Ignesco.dk - android talk & help

Bund