19. oktober 2004 - 23:50Der er
55 kommentarer og 1 løsning
Der er SÅ mange brugere på chatten
Jeg har lige kodet en chat og den er meget køn :)
Så tænkte jeg på at man jo ikke skulle sidde der helt alene og snakke med sig selv, så jeg vil lave sådan en "antal folk online" ting... Det ved jeg dog ikke helt hvordan jeg skal gribe an... Hvis folk gider klikke på en "log af" knap er det jo nemt nok, men hvis de bare lukker browseren, er det lidt sværere... Så havde jeg tænkt mig at hvis man ikke havde skrevet noget i et minut var man offline.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Da du jo havde noget "autoopdatering" kunne du lade serverdelen dertil vedligeholde en databasetabel med et brugerid og et timestamp. SQLen kunne være noget i stil med
INSERT REPLACE INTO tabelnavn (id) VALUES ('{$brugerid}')
1)Jeg prøvede at bruge window.location.reload(true) i stedet for window.location.href=window.location , for at undgå klik lyden, men siden bliver blank i et øjeblik, hver gang den reloader, og det gør den ikke med location.href.
2)Jeg skriver nu i en tabel når en bruger logger på eller sender en besked:
mysql_query("INSERT INTO chat(bruger, tid, kommentar) VALUES('$bruger', '$tid', '$besked')"); mysql_query("UPDATE chatbrugere SET sidsteinput='$tid' WHERE brugernavn='$bruger'"); ... if($funktion == "logoff") { mysql_connect("localhost", "xxxxxxx", "xxxxxx"); mysql_select_db("xxxxx"); mysql_query("DELETE FROM chatbrugere WHERE brugernavn='$bruger'"); unset($_SESSION['bruger'], $_SESSION['gender']); header("Location: chatlogin.php");
Nu skal jeg så have kodet således at man automatisk ikke er "bruger" hvis man ikke har skrevet noget i f.eks 2 minutter :) Ser frem til hjælpen sandbox eller andre :)
Det fandt jeg også ud af (den manglende parantes), men dette bliver ikke afviklet:
if(mysql_num_rows(mysql_query("SELECT * FROM chatbrugere WHERE brugernavn='$bruger1'")) < 1) { unset($_SESSION['bruger'], $_SESSION['gender']); print "<script type=\"text/javascript\">"; print "alert(\"You've been logged off automaticly\n-Because you didn't say anything for one minute !!\")"; print "parent.location.href='chatlogin.php';"; print "</script>"; }
Når jeg vælger view source på den efter man er "smidt af" siger den fint nok:
<script type="text/javascript">alert("You've been logged off automaticly -Because you didn't say anything for one minute !!"); parent.location.href='chatlogin.php';</script>
Kan man ikke lave noget php som sender en streng ca hvert 10 sec til en server side php. Og hvis den server side så ikke har hørt noget fra den bruger i 11 sec så er han nok ikke på mere?
mysql_query("INSERT INTO chatbrugere(brugernavn, sex, sidsteinput) VALUES('$brugernavn', '$sex', NOW())") or die(mysql_error());
for ellers ser MySQL bare tid-feltet som en ugyldig værdi og skriver 0000-00-00 00:00:00 ind som tidspunkt og det er i hvert fald mindre end nu - 1 min
Jeg HAR fundet fejlen :) Det er så plat at man ikke tror det...
Der manglede session_start() i toppen af siden. Det virker fint nu, man bliver smidt af hvis man tier stille i et minut. Den kunne jo ikke finde $_SESSION['bruger']
:)
Du har dog slidt så smukt i det at du skal have points'ne alligevel, så smid et svar, og tak for gejsten :)
Synes godt om
Slettet bruger
21. oktober 2004 - 01:47#48
Og uden session, så ender queryen med at blive mysql_query("SELECT * FROM chatbrugere WHERE brugernavn=''") og der er naturligvis ikke nogen rækker der passer dertil...
Har du overvejet at sætte error_reporting(E_ALL); det kan lette med at finde fejl.
Hey måske kan du lige hjælpe mig med en anden ting (så'n)
Den skal en gang imellem slette alt i databasen, undtagen de 20 poster, der er de nyeste, og som vises (ellers bliver databasen for stor)... Hvordan gør jeg det ?
$tyveraekker = mysql_query("SELECT * FROM chat ORDER BY tid DESC LIMIT 0, 20"); mysql_query("FJERN ALLE RÆKKER SOM IKKE ER DE TYVE DER");
Måske på siden hvor man skriver sin input ? Eller simpelthen på siden hvor logoet er :) Der aldrig reloades..
Synes godt om
Slettet bruger
21. oktober 2004 - 02:14#54
Ja, eller login-siden måske. Der er mange muligheder. Og det gør jo ikke noget, hvis der går et par timer mellem den får slettet gamle beskeder - med mindre der er rigtig mange brugere eller det kniber gevaldigt med diskplads.
Prøv lige at logge på, så jeg kan se at det virker med mere end een :)
Synes godt om
Ny brugerNybegynder
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.