Gå til innhold

Function, er dette mulig?


Anbefalte innlegg

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
Videoannonse
Annonse

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

 
$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 av OISNOT
Lenke til kommentar

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
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 av xatic
Lenke til kommentar
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
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...