Finnduz Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 Hei. skal sjekke om en bruker er pålogget og prøvde en funksjon som jeg lagde. men vetke helt hvordan jeg skal få det til som jeg vil =S function Status($id) { $sql = mysql_query("SELECT * FROM brukere WHERE id = '$id'"); while ($row = mysql_fetch_row($sql)) { $BrukerData['aktiv'] = $row[13]; } $id = $_SESSION['id']; $brukerdata = BrukerData($id); $aktiv = $brukerdata['aktiv']; $time = time(); if ($time <= $aktiv) { $status = "Brukeren er pålogget"; } elseif ($time >= $aktiv) { $status = "Brukeren er ikke pålogget"; return $status; } } meningen er at den skal kunne skrive ut $status hvis den er "TRUE" eller "FALSE" skjønner? prøvde å bare bruke, session_start(); include("mysql/dbcon.php"); include("function/functions.php"); $id = $_SESSION['id']; $get_status = status($id); echo $get_status; men dette funka dårlig, noe som kan hjelpe/forklare? Lenke til kommentar
Martin A. Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 Brukeren kan da ikke holde på frem i tid. Nå sjekker du om brukerens aktivtid er HØYERE eller lik nåværende time(). Brukeren vil derfor oppføres som pålogget VELDIG sjeldent. Bytter du ut "$time = time();" med "$time = time() - 900;", vil bruken markeres som pålogget om han/hun var aktiv siste 15 minutter. Ser også ut som at du kjører denne sjekken KUN på nåværende brukere. Tviler på at han/hun trenger slik informasjon. $sql = mysql_query("SELECT * FROM brukere WHERE id = '$id'"); Den er også veldig overkill. $id er heller ingen streng. "SELECT aktiv FROM brukere WHERE id={$id} LIMIT 0,1" holder i lange baner. while() er også unødvendig, da du kun henter ut en rad. W Lenke til kommentar
Finnduz Skrevet 9. oktober 2008 Forfatter Del Skrevet 9. oktober 2008 glemte å adde en liten del, men uansett. Hvordan skal jeg få den til å printe ut $status? Lenke til kommentar
OISNOT Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 (endret) $BrukerData['aktiv'] = $row[13]; $brukerdata = BrukerData($id); $aktiv = $brukerdata['aktiv']; Erm... først lager du en array med nøkkel 'aktiv' og verdi fra databasen som ikke brukes igjen. Deretter returnerer funksjonen BrukerData en array over brukerdata. Inneholder dette arrayet en nøkkel kalt 'aktiv' ? btw dette er 2 forskjellige variabler: $BrukerData $brukerdata Edit: Bare for å spesifisere. Hvis de ikke hadde forskjellige navn ville variabelen som holder verdien du hentet fra databasen bli skrevet over med et nytt array fra funksjonen BrukerData. Endret 9. oktober 2008 av OISNOT Lenke til kommentar
xatic Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 Siden du fik så mange svar og jeg ikke helt forstod opplegget ditt har jeg laget noe du helt sikkert får brukt for. (Se gjennom koden og endre hva du enn må endre). Fungerte hvertfall for meg, // Sjekker om brukeren er logget inn function CheckLogged($melding) { if ($_SESSION['logged'] == 0) { $feilmelding = "$melding"; include("class/feilmelding.php"); } } // Oppdatere når du sist var aktiv på siden function OnlineUpdate($id) { if ($_SESSION['logged'] == 1) { $time = time() + 300; return $sql = mysql_query("UPDATE brukere SET aktiv = '$time' WHERE id = '$id'"); } } // Er brukeren aktiv? function CheckOnline($id) { if ($_SESSION['logged'] == 1) { $brukerdata = BrukerData($id); $aktiv = $brukerdata['aktiv']; $time = time(); if ($time <= $aktiv) { return $status = "Brukeren er pålogget"; } elseif ($time > $aktiv) { return $status = "Brukeren er Offline"; } } } Lenke til kommentar
xatic Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 (endret) Dobbel post! *Delete* Endret 9. oktober 2008 av xatic Lenke til kommentar
Martin A. Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 Bravo! *klapp-klapp* Du gjorde AKKURAT hva jeg sa at trådstarter IKKE kunne gjøre. $time = time(); if ($time <= $aktiv) { INGEN kan være aktiv forut for sin tid. Lenke til kommentar
xatic Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 (endret) Bravo! *klapp-klapp*Du gjorde AKKURAT hva jeg sa at trådstarter IKKE kunne gjøre. $time = time(); if ($time <= $aktiv) { INGEN kan være aktiv forut for sin tid. Herregud? Det funker da HELT fint? Den sjekker om tiden er MINDRE enn anngitt tid som er time() + 300 = 5min. Hvis tiden er mindre er brukeren pålogget, hvis tiden går over 5min (hvis brukeren er inaktiv i over 5minutter) er brukeren offline f.eks. Så kan du bare bygge videre. Kan også nevne at jeg bruker nesten likt script (bare litt større) på flere av mine sider og det fungerer utmerket. Endret 9. oktober 2008 av xatic Lenke til kommentar
Finnduz Skrevet 9. oktober 2008 Forfatter Del Skrevet 9. oktober 2008 Bravo! *klapp-klapp*Du gjorde AKKURAT hva jeg sa at trådstarter IKKE kunne gjøre. $time = time(); if ($time <= $aktiv) { INGEN kan være aktiv forut for sin tid. Herregud? Det funker da HELT fint? Den sjekker om tiden er MINDRE enn anngitt tid som er time() + 300 = 5min. Hvis tiden er mindre er brukeren pålogget, hvis tiden går over 5min (hvis brukeren er inaktiv i over 5minutter) er brukeren offline f.eks. Så kan du bare bygge videre. Kan også nevne at jeg bruker nesten likt script (bare litt større) på flere av mine sider og det fungerer utmerket. Sant som du sier, scriptet ditt fungerte utmerket. Hjalp mye å se hvordan funksjonene var bygget, takker for god/solid hjelp. Forstod heller ikke hva m4rtin mente med sin post. Lenke til kommentar
Martin A. Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 Bravo! *klapp-klapp*Du gjorde AKKURAT hva jeg sa at trådstarter IKKE kunne gjøre. $time = time(); if ($time <= $aktiv) { INGEN kan være aktiv forut for sin tid. Herregud? Det funker da HELT fint? Den sjekker om tiden er MINDRE enn anngitt tid som er time() + 300 = 5min. Hvis tiden er mindre er brukeren pålogget, hvis tiden går over 5min (hvis brukeren er inaktiv i over 5minutter) er brukeren offline f.eks. Så kan du bare bygge videre. Kan også nevne at jeg bruker nesten likt script (bare litt større) på flere av mine sider og det fungerer utmerket. Så ikke at du la til 300 på aktiv tid, beklager det. Syns fortsatt det blir litt feil. Mye bedre å legge på en offset på $time før man kjører på med sammenligninger, så lar man brukerens aktivtid i databasen stå uberørt. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå