Avatar billede nielschristiansen Nybegynder
17. december 2003 - 17:44 Der er 18 kommentarer

hvordan får man php til at vise alle der er logget ind på siden

Hej jeg har lavet et bruger login som virker fint det skjuler alle de vigtige links til man er logget in men nu vil jeg gerne lave det sådan at man får vist alle dem der er logget ind på siden så man kan se hvem der er online


håber der er nogle der kan hjælpe mig med det

mvh
Niels Christiansen
Avatar billede nicklasb Nybegynder
17. december 2003 - 18:58 #1
problemet med "alle der er online", er at du i realiteten kun er 'online' på serveren i de sekunder severen og din computer kommunikere, om frem- og tilbagesendelse af data.
Så for at kunne lave en sådan liste er du desværre nød til at gå lidt på kompromi.. Du kan eksempelvis antage at man er online på siden i alt 5 minutter efter sidste tastetryk.. eller evt vælge et længere tidsinterval hvis mange af dine sider er sider, hvor man skal downloade store filer, eller læse lange beskeder.. Der bliver onlinelisten dog igen mere usikker.. Så det er om at finde balancen.
Nu opretter du så en kolonne, fx kaldet 'lastonline' .. Ved hvert nye load af siden, vælger du nu at opdatere denne med et timestamp, hver gang brugeren henter noget.. Altså på ALLE siderne..!
Det kræver noget af serveren.. Men nok den smarteste måde at gøre det på..

Du KUNNE også tjekke på session cookies.. Men det er dog langt sværre at sætte sig ind i som 'ny bruger', og det er også langt sværre at få til at virke, hvis du ikke selv kan administrere din server fuldt ud..

Så en løsning er det da ;)

/Nicklas B.
Avatar billede nicklasb Nybegynder
17. december 2003 - 19:00 #2
og den 'lastonline' du skulle oprette, er så i din tabel med brugerdata.. Altså som en ekstra, efter id, brugernavn, password, email osv..
Hvis du har spørgsmål til det jeg har skrevet (noget som evt. lyder meget langt ude), spørger du endelig bare.. ;)
Avatar billede nielschristiansen Nybegynder
17. december 2003 - 19:03 #3
det vil sige at jeg skal oprette en post mere i min login tabel som feks. hedder last og bede php om at hente de sidste brugere der var online ??
Avatar billede nielschristiansen Nybegynder
17. december 2003 - 19:08 #4
den side jeg har set det på er http://cs.picco.dk/ der kan man bla. se hvem der er online samt hvem der spiller på deres server så det var der jeg fik ideen.

men som sagt det jeg vil er simpelt hend at lige så snart man er logget ind står ens navn på siden er der flere der gør det står alle navnene på siden
kan man ikke gøre det uden om databasen ved hjælp af en session eller noget ??
Avatar billede nielschristiansen Nybegynder
17. december 2003 - 19:39 #5
hvordan får den nye række i min bruger tabel info om hvem der er logget ind ??
Avatar billede nicklasb Nybegynder
17. december 2003 - 20:41 #6
hvordan identificere du i din database om brugeren er logget ind, eller om han har forladt siden? Det er jo der problemet ligger..
Du kan ikke se ud fra databasen om brugeren LIGE nu er på?! (hvis du har lavet dit system som mange andre gør, og som jeg af gode grunde kun kan gå ud fra du også gør?!)
Den liste der er på den side du har linket til, er da en spiller-aktiv liste.. Altså om de er inde i det givet spil? Sådan kan du desværre ikke opsætte det med html og php sider, da de bliver genereret på meget få sekunder, og herefter sendt ud til brugeren.. Serveren ved herefter ikke om brugeren stadig sidder og kigger på siden..

Du KAN lave det med sessions.. Men så skal du vide hvad du gør.. Og det ved du ikke hvis du ikke allerede er inde i at lave det på den anden måde..

Men ja.. Metoden jeg ville anbefale dig var som du skrev 19:03:14 at oprette endnu en kolonne ud fra hver bruger, som indeholder sidste reloads timestamp.. Ved at gemme dette kan du så på en anden side, hente alle brugere hvor timestampet fx er UNDER de 5 min.. Altså 5*60 sekunder = 300 sekunder..

Hvis du bruger denne metode har du nemlig også løst et andet problem.. Registrering af lukning af browseren.. Det kan være MEGET svært at kontrollere, uden brug af klientside-scripting.. Men på dette område skal du passe på, og konstant serverside tjekke alle informationer, da der her er en mulighed for brugerens indblanden.. Ved den anden metode er det lige meget om brugeren har lukket eller ej.. Der har du bare selv antaget at brugeren ikke er på mere hvis han ikke har været aktiv i fx 5 min..
Du kan altså ikke se ud fra informationerne om han er gået, men blot at han ikke er ved siden mere (og vel derved heller ikke bruger den mere?)
Avatar billede nielschristiansen Nybegynder
17. december 2003 - 20:48 #7
det jeg har lavet indtil videre ser sådan ud her


<?php
function connect(){
if (!$db = mysql_connect("localhost","bruger adgang","kode")) {
    print ("<h1>Kan ikke etablere forbindelse til databasen!</h1>\n");
    return 0;
    }else{
    mysql_select_db("bruger",$db);
    return 1;
    }
    } 
function check_user ($user, $password){
if (connect()){
$password = substr($password, 0, 8);
$sql = "select * from rdnwo_dk.bruger where brugernavn = '$user' and adgang = '$password'";
$result = mysql_query($sql);
if (mysql_num_rows($result)== 1){

return 1;
}else{
?>
<h3>beklager du er ikke godkendt!</h3>
<?


return 0;
}
}
}
if(!isset($user) or !check_user($user,$password)){
?>

<form action=<? echo $PHP_SELF;?> method="post">
&nbsp&nbsp&nbsp <p>Brugernavn:<br><input type="text" name="user" size="15"><br>
Password:<br> <input type="password" name="password" maxlength="15" size="8"><br>
<input type="submit" name="submit" value="Log ind">
</form>
<?
}else {
?>

<h3> Du er logget ind som [R.D:NWO]<?print $user?></h3>
<form action="http://www.rdnwo.dk" method="post">
<input type="submit" value="log af"><br>
<a href="php/opret.htm"target="midt">opret bruger</a>
</form>

</center>

<table border="0" width="100" cellspacing="0" cellpadding="0">
<tr>
<thead  style="color:black;background-image:url(billeder/b.gif);">

<b>Downloads</b>
</thead>
<td>

<img src="billeder/t.gif" alt=""> &nbsp <a href="map.htm" target="midt">Map</a> <br />
<img src="billeder/t.gif" alt=""> &nbsp <a href="update.htm" target="midt">Update</a><br />
<img src="billeder/t.gif" alt=""> &nbsp <a href="div.htm" target="midt">Diverse</a><br />
<img src="billeder/t.gif" alt=""> &nbsp <a href="logo.htm" target="midt">Logo</a><br />
</td></tr></table>
<?
}
?>

og det ville jo være smart vis jeg på en eller anden måde kunne få det snørklet ind i dette script
Avatar billede nicklasb Nybegynder
17. december 2003 - 23:01 #8
hvad er det helt præcist din onlineliste skal vise? Er det dem der er på din side, eller dem der spiller på din server..
I første tilfælde, er det som jeg har beskrevet ovenfor.. Så er det blot at sætte det ind i koden..
Hvis sidste tilfælde er den situation du sidder i, har jeg nok misforstået det hele.. Og i denne situation er jeg nok langt fra den rigtige at spørge, idet jeg aldrig spiller det spil..
Avatar billede nielschristiansen Nybegynder
18. december 2003 - 10:02 #9
det er de personer der er på min side men mit problem er nok at jeg er så ny at jeg ikke helt ved hvad det er jeg skal sætte ind i koden
Avatar billede exp Juniormester
18. december 2003 - 10:46 #10
Du kan lave en liste der er rimelig "sikker" ved at have en usynlig iframe, der opdateres automatisk fx hvert minut. Når så browseren lukkes opdateres den jo ike længere...
Avatar billede nielschristiansen Nybegynder
18. december 2003 - 10:49 #11
hvordan laver man det ??
iframen er jeg med på men hvordan får man den til at opdatere hvert minut og er det uden om databasen ??
Avatar billede exp Juniormester
18. december 2003 - 10:57 #12
Du laver en side, hvor du via fx meta tags sætter en reload på fx et minut (eller 5, hvis du hellere vil det)
Denne side indeholder et databasekald, hvori "seneste tidspunkt brugeren er set" opdateres, samtidig med, at rækker i tabellen, hvor "sidst set" er ældre end fx 5 minutter
Avatar billede nielschristiansen Nybegynder
18. december 2003 - 11:02 #13
ok det lyder ikke så svært men jeg har ledt  efter de meta koder man kan bruge i toppen af siden men de eneste jeg har fundet indtil nu er den søgemaskinerne bruger kender du et websted (eller en bog)hvor man kan lære mere om mulighederne med meta ??
eller kan du lige meta koden i hovet som jeg skal bruge
Avatar billede exp Juniormester
18. december 2003 - 11:05 #14
Avatar billede nielschristiansen Nybegynder
18. december 2003 - 11:21 #15
kan forestille jeg skal bruge Window-target
og så reload jeg prøvede at læse mere om windows target men siden er i stykker men jeg går udfra at den bare kan  henvise til en ramme som andre target kan er det korrekt ??
Avatar billede exp Juniormester
18. december 2003 - 11:28 #16
du skal ikke bruge target... bare dette i <head>-delen af den side der opdaterer databasen:
<META HTTP-EQUIV="Refresh" CONTENT="1">

antal sekunder sættes efter behag
Avatar billede nielschristiansen Nybegynder
18. december 2003 - 11:34 #17
ok så jeg skriver det her <META HTTP-EQUIV="Refresh" CONTENT="1">
i toppen af den side der skal reloades og samtidig laver jeg en forespørgsel til databasen som henter tidspunkt den enkelte bruger loggede ind som så udskriver navnet på brugeren det prøver jeg lige så skriver jeg igen hvis det går helt galt men tak for hjælpen
indtil nu
du skal lige have dine point for tabellen hvis du lige giver mig et svar der

mvh
Niels Christiansen
Avatar billede nielschristiansen Nybegynder
18. december 2003 - 13:26 #18
nu har jeg oprettet forbindelse til databasen og jeg har fået oprettet en række mere i tabellen som hedder tid(time) men jeg er lidt i tvivl om hvordan jeg drejer den forespørsel så den henter de rigtige tider samt hvordan får jeg sat tiden ind når folk logger ind ?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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