Avatar billede jop... Nybegynder
02. august 2004 - 09:44 Der er 12 kommentarer og
1 løsning

Registrere online brugere..

Jeg sidder og leger lidt med en funktion, til at registrere hvem der er online på en side. Jeg har i forejen en iframe til at stå og opdatere, og tænkte at jeg kunne bruge den tilformålet.

Min plan er, at iframen skal indsætte i mysql-databasen hvert 5 minut. I tabellen i databasen vil jeg have følgende felter (id, ip, dato/klokkeslet, navn)

Jeg vil på online siden, så lave en funktion der går ind og tjekker, om personen har en "dato/klokkeslet" der ligger indenfor 5 minutter.

Det er selvfølgelig kun, hvis personen er logget ind, at den indsætter navn i tabel..

Er der nogle ting jeg skal være opmærksom på inden jeg starter?

Hvordan laver jeg en funktion der går ind og tjekker, om personen har en "dato/klokkeslet" der ligger indenfor 5 minutter? Har ikke lige kunnet finde noget som jeg med sikkerhed har kunnet bruge!

Takker på forhånd..

Mvh René

p.s. Der er sat så mange point af, da jeg lige smider koden ind, når jeg er færdig, så I lige kan tjekke den  ;-)
Avatar billede jonat Nybegynder
02. august 2004 - 10:08 #1
Her er et fuldt eksempel:

http://www.udvikleren.dk/article.php?aid=148&techid=6

Det er godt nok en lille smule anderlederes end at du forslår men det kan da bruges!!!

// Jonat.
Avatar billede jakobdo Ekspert
02. august 2004 - 11:30 #2
Hvis du har tabellen, hvis du har indsat følgende værdier:
id, ip, dato/klokkeslet, navn

Så kan du få online brugere med SQL'en:

SELECT * FROM tabelNavn WHERE UNIX_TIMESTAMP(dato/klokkeslæt) > UNIX_TIMESTAMP(NOW())-300
Avatar billede jop... Nybegynder
02. august 2004 - 13:18 #3
Jeg har
Avatar billede jop... Nybegynder
02. august 2004 - 13:31 #4
Jeg har set den på udvikleren.dk, og synes ikke at den er særlig god til det som jeg skal bruge.. Og vil også hellere lave mine ting selv..  ;-)

UNIX_TIMESTAMP? Hvordan skal jeg så lave databasen?

id (int), ip (varchar), dato/klokkeslet (datetime) / (timestamp) , navn (Varchar)?

- og så vil jeg vist også til at gå igang.. :-)

//René
Avatar billede jakobdo Ekspert
02. august 2004 - 13:37 #5
Ja, brug datetime, og ellers de ting du selv foreslår.

Jeg har brugt følgende:

id - INT(8)
ip - DOUBLE() - så gemmer jeg ip med funktionen: INET_ATON('$IP') og henter den igen med INET_NTOA()
dato - DATETIME
navn - varchar eller text
Avatar billede jop... Nybegynder
02. august 2004 - 13:42 #6
Men min select kommer til at se sådan her ud ikke?

SELECT * FROM tabelNavn WHERE UNIX_TIMESTAMP > UNIX_TIMESTAMP(NOW())-300

Jeg er lidt en slam-koder  :-D så jeg er ikke altid helt hurtig..

Mvh René
Avatar billede jakobdo Ekspert
02. august 2004 - 13:46 #7
Jo, den SELECT er god nok!
Avatar billede jop... Nybegynder
02. august 2004 - 22:33 #8
WHERE UNIX_TIMESTAMP(tid) > UNIX_TIMESTAMP(NOW())-300

Er den ikke mere rigtig?
Avatar billede jop... Nybegynder
02. august 2004 - 22:48 #9
Hvordan får jeg egentlig tabellerne opdateret?

<? if ($login_navn) {


$conn = mysql_connect("mysql.vipz.dk", "xxxxx", "xxxxxx");
mysql_select_db("vipzdk");

mysql_query("update vipz_online set ip='$ip', navn='$login_navn', tid='$now' where ip = $ip") or die(mysql_error());

} else {

$conn = mysql_connect("mysql.vipz.dk", "xxxxx", "xxxxxx");
mysql_select_db("vipzdk");

mysql_query("update vipz_online set ip='$ip', tid='$now()' where ip = $ip") or die(mysql_error());
?>

Dette virker ikke, Men første gang en bruger skal registreres i online-systemet virker det her vel heller ikke.. Men jeg kan jo på den anden side heller ikke oprette en ny række for "opdatering"  :-)

Hjælp en slamkoder  :-p

//René
Avatar billede jop... Nybegynder
02. august 2004 - 23:05 #10
anyone? :-)
Avatar billede jakobdo Ekspert
03. august 2004 - 08:18 #11
Jeg ville evt gemme brugerens ID, når de logger ind, og så bruger det til at opdateret tabeller og lign...
Evt kig lidt på denne kode:

<?
$conn = mysql_connect("mysql.vipz.dk", "xxxxx", "xxxxxx");
mysql_select_db("vipzdk");

if ($login_navn)
{
    mysql_query("UPDATE vipz_online SET .... WHERE brugerID = $LOGIN_ID") or die(mysql_error());
}
else
{
    mysql_query("INSERT INTO....") or die(mysql_error());
}
?>
Avatar billede jop... Nybegynder
06. august 2004 - 07:16 #12
Har fået det til at virke.. Eller sådan nogenlunde da.. Hvis der er 2 felter med den samme ip i tabellen, hvordan er det så, at jeg kun får den til at skrive den ene?

Og et andet meget simpelt spørgsmål: Hvis man skriver: if $variabel == 'noget' betyder det at en variabel skal være en bestemt ting, men hvordan skriver man at en variabel ikke må være lig med 'noget'?

jakobdo --> Vil du ikke líge oprette et svar herinde, så du kan få point? :-)

Mvh René
Avatar billede jakobdo Ekspert
06. august 2004 - 08:14 #13
if $variable != 'noget'

For at undgå en IP er der 2 gange, kan du jo lave en SELECT * FROM tabelNavn WHERE IP = $IP
Hvis mysql_num_rows() er = 0, så indsætter du IP'en, hvis den er 1, så UPDATER du rækken.
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