Avatar billede stengaard Praktikant
05. november 2005 - 13:31 Der er 16 kommentarer og
1 løsning

angående hvem er online

hej jeg har lavet et loginsystem i php der kører mysql,det virker fint men kunne godt tænke mig at lave så man kunne se hvilke nogle bruger der var online, samt antal, mere at man også kan se deres bruger navn altså hvem der er på og ikke på eer der nogle der kan hjælpe her !!!!
Avatar billede kourinsu Nybegynder
05. november 2005 - 13:49 #1
Du kan oprette en kolonne i din brugerdatabase, der indeholder f.eks. et unix timestamp. Dette timestamp bliver så opdateret, hver gang en bruger sufer ind på en side i systemet. Så kan du danne din onlineliste udfra brugere, hvis timestamp er blevet opdateret indenfor f.eks. 5 min.
Avatar billede stengaard Praktikant
05. november 2005 - 13:55 #2
og hvordan laber man det min login tabel ser så dan her ud er det bare en der skal sættes på den tabel eller skal man lave en anden for at bruge timestamp


CREATE TABLE `login` (
  `ID` int(11) NOT NULL auto_increment,
  `user` varchar(50) NOT NULL default '',
  `pass` varchar(16) NOT NULL default '',
  `ip` varchar(15) NOT NULL default '',
  `navn` varchar(51) NOT NULL default 'Ikke oplyst',
  `email` varchar(50) NOT NULL default '',
  `alder` char(2) NOT NULL default '0',
  `profiltekst` longtext NOT NULL,
  `fil` varchar(50) NOT NULL default '',
  `bopael` varchar(50) NOT NULL default '',
  `tlf` varchar(50) NOT NULL default '',
  `tid` varchar(50) NOT NULL default '',
  `hp` varchar(50) NOT NULL default 'Ikke oplyst',
  `status` char(1) NOT NULL default '',
  PRIMARY KEY  (`ID`),
  UNIQUE KEY `idx_brugere` (`user`),
  FULLTEXT KEY `profiltekst` (`profiltekst`)
) TYPE=MyISAM PACK_KEYS=0 AUTO_INCREMENT=1 ;
Avatar billede Slettet bruger
05. november 2005 - 14:07 #3
alter table 'login' add column time as timestamp default now()
Avatar billede stengaard Praktikant
05. november 2005 - 14:10 #4
skal det bare sættes ind i tabelen som det står eller hvad
Avatar billede Slettet bruger
05. november 2005 - 14:12 #5
det var kun hvis du allerede havde oprettet tabellen så kunne du tilføje kolonnen sådan. Se iøvrigt http://dev.mysql.com/doc/refman/5.0/en/alter-table.html
Avatar billede stengaard Praktikant
05. november 2005 - 14:15 #6
ja den ligger på
mysql allerede
Avatar billede Slettet bruger
05. november 2005 - 14:17 #7
Så er det jo bare at checke syntaxen af og så køre alter command i en mysql console eller hvad du nu bruger til at tilgå den-
Avatar billede stengaard Praktikant
05. november 2005 - 14:18 #8
skal den se sådan ud

CREATE TABLE `login` (
  `ID` int(11) NOT NULL auto_increment,
  `user` varchar(50) NOT NULL default '',
  `pass` varchar(16) NOT NULL default '',
  `ip` varchar(15) NOT NULL default '',
  `navn` varchar(51) NOT NULL default 'Ikke oplyst',
  `email` varchar(50) NOT NULL default '',
  `alder` char(2) NOT NULL default '0',
  `profiltekst` longtext NOT NULL,
  `fil` varchar(50) NOT NULL default '',
  `bopael` varchar(50) NOT NULL default '',
  `tlf` varchar(50) NOT NULL default '',
  `tid` varchar(50) NOT NULL default '',
  `hp` varchar(50) NOT NULL default 'Ikke oplyst',
  `status` char(1) NOT NULL default '',
  `time` timestamp(14) NOT NULL,
  PRIMARY KEY  (`ID`),
  UNIQUE KEY `idx_brugere` (`user`),
  FULLTEXT KEY `profiltekst` (`profiltekst`)
) TYPE=MyISAM PACK_KEYS=0 AUTO_INCREMENT=10 ;
Avatar billede Slettet bruger
05. november 2005 - 14:20 #9
Nej, når du allerede har tabellen skal du bruge alter table

alter table 'login' add column time as timestamp default now()

og læs lige http://dev.mysql.com/doc/refman/5.0/en/alter-table.html for god ordens skyld
Avatar billede stengaard Praktikant
05. november 2005 - 14:21 #10
hvis man logger på så der jo ikke noget skal man tilføre tiden selv i scriptet login eller hvorhenne ??
Avatar billede Slettet bruger
05. november 2005 - 14:26 #11
På alle sider skal du have en

update login set time = now() where id = <den aktuelle brugers id>

du skal også have et script som nogle gange hvor længe siden det er en bruger har været aktiv. Eks. hver tyvende minut og hvis der ikke har været nogen aktivitet sætter du time til null med

update login set time = null where id = <den aktuelle brugers id>

husk der ikke må være NOT NULL constraint på kolonnen hvis det skal kunne fungerer som beskrevet ovenfor.
Avatar billede stengaard Praktikant
05. november 2005 - 14:30 #12
hvordan laver man så scriptet der henter og ser om der står noget i timestamp og sætter dem der er logget på i online og dem der ikke er i offline

<?
include("access.php");
$sql = mysql_query("SELECT id, user, timestamp as tid FROM login  ORDER by user asc");
echo "Komplet liste over dem der er online";
$strNumber = 0;
while($row = mysql_fetch_array($sql)) {
$strNumber = $strNumber+1;
echo "<tr>
<td width='100'>$strNumber -  $row[navn] <br>Brugernavn: $row[user]</td></tr>";
}
?>


eller er jeg helt galt på den
Avatar billede Slettet bruger
05. november 2005 - 14:33 #13
SELECT id, user, timestamp as tid FROM login  WHERE not time is null ORDER by user asc
Avatar billede kourinsu Nybegynder
05. november 2005 - 16:21 #14
Istedet for at sætte timestamp til null, kan du bare lavet noget ala:

SELECT id, user FROM login WHERE time >= now(-300) ORDER by user asc

Så slipper du for at tilgå din database konstant.
Avatar billede stengaard Praktikant
05. november 2005 - 18:29 #15
mmmm er ikke helt med scriptet ser således ud men der kommer ikke noget frem

<?
include("access.php");
$sql = mysql_query("SELECT id, user, timestamp as tid FROM login  WHERE not time is null ORDER by user asc");
echo "Komplet liste over dem der er online";
$strNumber = 0;
while($row = mysql_fetch_array($sql)) {
$strNumber = $strNumber+1;
echo "<tr>
<td width='100'>$strNumber -  $row[navn] <br>Brugernavn: $row[user]</td></tr>";
}
?>
Avatar billede stengaard Praktikant
05. november 2005 - 18:33 #16
<?
update login set time = now() where id = <den aktuelle brugers id>
update login set time = null where id = <den aktuelle brugers id>
?>

hvordan skal de linier sættes ind istarten eller hvorhenne for at virke det du skriver i <....> skal det bare hedde det du skriver ?
Avatar billede stengaard Praktikant
01. december 2005 - 10:44 #17
lukket
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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