hejsan
skulle behöva med att visa on usern är online eller offline ? , testade med att om sessionen är satt echo "online" men tyvär så funkade det inte , så fort jag loggade in så blev alla andra online också.
8 svar · 1 065 visningar · startad av vagann
hejsan
skulle behöva med att visa on usern är online eller offline ? , testade med att om sessionen är satt echo "online" men tyvär så funkade det inte , så fort jag loggade in så blev alla andra online också.
Du får lägga in ett fält i databasen som uppdateras med datum och tid varje gång användaren gör något, sen plocka ut användare vars tid inte är äldre än kanske 10 minuter.
Jag är nybörjare så får du hjälpa mig lite med koder :D
alter table `members` add aktiv timestamp
är på rätt spår ?
Det känns som rätt spår, men dubbelkolla syntaxen.
Sedan när någon gör något som du vill skall trigga "aktiv, typ loggar in, byter sida, postar ngt osv..)
update members set activetimstamp = getdate() where userid = xxxx
(getdate() är en mssql funktion, jag gissar du skall leta efter motsvarande mysql)
Och sedan när du vill lista aktiva användare
select userid,firstname.... from mebers where activetimestamp > (dateadd(mi,-10,getdate())
(Och även här är det ju mssql syntax, dvs T-Sql, så kolla upp getdate och dateadd om det är mysql du skall använda, vilket jag gissar eftersom det väl är vanligast tillsammansmed php.
Detta gör ju att du inte kan spåra bakåt vad som hänt,
Om du vill utveckal idén lite till så skippar du ju activetimestamp i memebers tabellen utan skappar en loggtabell med kanske tre fält. userid, timestamp och event
Då sparar du ner när någon gör något där, och kan hämta info om när vem gjorde vad.
Dvs, du får samma funktionallitet, men bevarar spårbarhet, till en kostnad av loggposter i databasen, så blir det inte massor av data borde det vara en bättre lösning.
fan va snällt av dig att berätta så noggrant och fixa det mesta . men jag har flera frågor på saker som jag inte är säker på .... så ska fixa tabellen med alter table `members` add aktiv timestamp , sedan ska jag ha
update members set activetimstamp = getdate() where userid = xxxx
och
select userid,firstname.... from mebers where activetimestamp > (dateadd(mi,-10,getdate())
i samma fil ? stämmer det eller :)?
I samma fil eller inte.
Det beror ju på. Framför allt beror väl det på dig ;)
Dvs känns det bra för dig att ha det i samma fil så ha det ...
Dvs, update skall ju anropas när en användare gör något aktivt, dvs en säker aktiv handling. login, byte av sida, postar ett inlägg eller vad det nu kan vara.
Och select skall ju anropas när du vill visa vilka användare som gjort en sån aktiv handling de senaste 10 minuterna.
Och sedan om du vill ha det i samma php fil beror ju på hur du har gjort, eller tänker göra.
/pebi
jaha ok =} ska testa snart men med
select userid,firstname.... from mebers where activetimestamp > (dateadd(mi,-10,getdate())
listar man ut tio personer på en sida visst=? det jag söker är om man är aktiv så ska det stå online på profilen :]
Själv har jag gjort det så här
<?php
$sql = "UPDATE users SET online = '0' WHERE last < DATE_SUB(now(), INTERVAL 3 MINUTE)";
mysql_query($sql, $conn) or die(mysql_error());
if(isset($_SESSION['sess_id'])) {
$sql = "UPDATE users SET online = '1', last = NOW() WHERE id = '{$_SESSION['sess_id']}'";
mysql_query($sql, $conn) or die(mysql_error());
}?>
Skapad last som uppdateras vid varje sidbyte och händer ingen sidebyte så blir han offline automatiskt tills han rör sig.
Då det inte går köra på session eller dyligt som sitter i 25 minuter eller vänta på att dem klickar bara på logga ut och ta bort det då.
Om dem stänger bara av webbläsaren så är det riktigt delay på den.
nice :D :D om jag förstod din kod rätt så är den beroande av sidbyte och om 3 minuter utan nån action så blir de offline, men hur ska min tabellen se ut `? :)
behövs det inte nån kod som skriver ut status för usern `?'
btw är tacksam för din kod