Avatar billede n-emy Nybegynder
27. maj 2003 - 11:12 Der er 21 kommentarer og
1 løsning

Ændre online script

Hej Jeg har communityet www.n-gamez.dk og flg script som viser hvem der er online:

<?


function InsertUser() {

    global $REMOTE_ADDR, $HTTP_USER_AGENT, $PHP_SELF;

   

    $ip            = $REMOTE_ADDR;

    $host          = gethostbyaddr($ip);

    $browser        = $HTTP_USER_AGENT;

    $page          = $PHP_SELF;

    $time            = explode(" ", microtime());

    $usersec        = (double)$time[1];

    mysql_query("DELETE FROM online_users WHERE ip like '$ip'");

    mysql_query("INSERT INTO online_users (ip,host,date,browser,page) VALUES ('$ip','$host','$usersec','$browser','$page')");

}



function ShowUsers() {



    $time            = explode(" ", microtime());

    $usersec        = (double)$time[1];

    mysql_query("DELETE FROM online_users WHERE date < $usersec -100");

    $countusers    = mysql_fetch_array(mysql_query("SELECT count(*) as total FROM online_users"));

   

    print ('<table class="tekstafsnit" border="0" CELLPADDING="0" CELLSPACING="0">');

    print ('<tr>');

    print ('<td STYLE="border-bottom:1px solid #000000;"><B><font face=verdana size=1>IP adresse:</B></td>');

    print ('<td STYLE="border-bottom:1px solid #000000;"><font face=verdana size=1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>'); 

    print ('<td STYLE="border-bottom:1px solid #000000;"><B><font face=verdana size=1>Host adresse:</B></td>');

    print ('<td STYLE="border-bottom:1px solid #000000;"><font face=verdana size=1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>'); 

    print ('<td STYLE="border-bottom:1px solid #000000;"><B><font face=verdana size=1>Site:</B></td>');

    print ('</tr>');

   

    $result = mysql_query("SELECT * FROM online_users");

    while ($row = mysql_fetch_array($result)) {

        print ('<tr>');

        print ('<td><font face=verdana size=1>'.$row[ip].'</td>');

                  print ('<td><font face=verdana size=1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>'); 

        print ('<td><font face=verdana size=1>'.$row[host].'</td>');

                  print ('<td><font face=verdana size=1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>');

        print ('<td><font face=verdana size=1><a href="'.$row[page].'"> '.$row[page].' </a></td>');

        print ('</tr>');

                 

    }

    print ('</table>');



}



InsertUser();

showUsers();



?>


problemet er at den viser ip adresserne!

Jeg vil  gerne have den til når man er logget ind at den viser brugernavnet i stede for ip adressen, og når man ikke er logget ind skal den bare vise ip adressen!!
Sådan så der f.eks står:

Bruger online:
Thomas
Bo
Bent

Gæster online:
194.383.383.22

Hvis i forstår hva jeg mener er der nogen der kan det??
Avatar billede avminarm Juniormester
27. maj 2003 - 11:18 #1
din databasestruktur - kan du vise den?
Avatar billede summersun Nybegynder
27. maj 2003 - 12:14 #2
nu kan det jo godt være det bare er mig... men du siger at du ikk vil have den skrive IP adressen??

hvorfor gør du så det her print ('<td><font face=verdana size=1>'.$row[ip].'</td>'); ??
Avatar billede n-emy Nybegynder
27. maj 2003 - 12:23 #3
summersun>>
Den skal vise ipadressen på dem der ikke er logget ind og brugernavnet på dem der er logget ind!

avminarm>>
Hvilke tabeller i databasen vil du se??
Avatar billede exp Juniormester
27. maj 2003 - 12:48 #4
du skal lave noget erstatning, der, hvis der er en ip der er ens i både login-tabellen og online-tabellen, så skal scriptet udskrive brugernavn istedet for ip...

if ($tabel_login['ip'] == tabel_online['ip']) {
  echo $tabel_login['brugernavn'];
} else {
  echo $tabel_online['ip'];
}
Avatar billede summersun Nybegynder
27. maj 2003 - 12:51 #5
jojo det er så også fint nok :) (selv om folk ikke er glade for at den bliver vist)

men hvor i din kode tjekker du på om det er en GÆST eller en BRUGER? di skriver du jo bare alt brugere ud, uden at tjekke om det er en gæst eller bruger


vil se de tabeller du bruger til det her... tror det er det han vil se
Avatar billede exp Juniormester
27. maj 2003 - 12:54 #6
... og som summersun siger, det er ikke mange der ønsker det vist - brug det evt i samspil med dette scrpt (for brugernes skyld):

<?php
$ip = '127.0.0.1';

$ip2 = explode(".", $ip);

echo $ip2[0].".".$ip2[1].".".$ip2[2].".---";
?>
Avatar billede exp Juniormester
27. maj 2003 - 12:58 #7
Avatar billede n-emy Nybegynder
27. maj 2003 - 13:00 #8
Her er tabeloplysningerne:

tabellen: brugersystem: http://www.n-gamez.dk/billeder/db.jpg

tabellen: bruger:      http://www.n-gamez.dk/billeder/bruger.jpg

tabellen: online_users: http://www.n-gamez.dk/billeder/online.jpg
Avatar billede n-emy Nybegynder
27. maj 2003 - 13:00 #9
Vent lige lidt, jeg skal lige uploade billederne først
Avatar billede summersun Nybegynder
27. maj 2003 - 13:09 #10
du skal bare gøre det som Exp har skrevet... og så lige rettet navnene til :)
Avatar billede n-emy Nybegynder
27. maj 2003 - 13:13 #11
De tager alt for lang tid at uploade:

online_users:
  id int(11) NOT NULL auto_increment,
  ip varchar(255) NOT NULL default '',
  host varchar(255) NOT NULL default '',
  date int(11) NOT NULL default '0',
  browser varchar(255) NOT NULL default '',
  page varchar(255) NOT NULL default '',
  PRIMARY KEY  (id,ip)
) TYPE=MyISAM;


Bruger:


bruger:
`noegle` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`login_navn` VARCHAR( 12 ) DEFAULT NULL ,
`for_navn` VARCHAR( 50 ) DEFAULT NULL ,
`efter_navn` VARCHAR( 50 ) DEFAULT NULL ,
`email` VARCHAR( 128 ) DEFAULT NULL ,
`passwd_hash` VARCHAR( 32 ) DEFAULT NULL ,
`oprettet` DATE DEFAULT NULL
`last_on` DATE DEFAULT NULL
Primarykey: noegle
Brugersystem:
`id` INT( 255 ) NOT NULL AUTO_INCREMENT ,
`brugernavn` VARCHAR( 255 ) NOT NULL ,
`kodeord` VARCHAR( 255 ) NOT NULL ,
`status` INT( 1 ) DEFAULT '0' NOT NULL ,
`kon` ENUM( 'Dreng', 'Pige' ) DEFAULT 'Dreng' NOT NULL ,
`alder` INT( 3 ) DEFAULT '0' NOT NULL ,
`fritekst` TEXT NOT NULL ,
`oprettet` INT( 255 ) DEFAULT '0' NOT NULL ,
`onlinetid` INT( 255 ) DEFAULT '0' NOT NULL ,
`sidstonline` INT( 255 ) DEFAULT '0' NOT NULL ,
`profil_vist` INT( 255 ) DEFAULT '0' NOT NULL ,
`inter` TEXT NOT NULL ,
`adm_type` ENUM( 'Crews', 'Moderator', 'CO-Admin', 'Skribent', 'Admin', 'Bruger', 'Programmør' ) DEFAULT 'Bruger' NOT NULL ,
`point` DECIMAL( 10, 5 ) DEFAULT '0.00000' NOT NULL ,
`mail` VARCHAR( 50 ) NOT NULL ,
`opdatedato` INT( 255 ) DEFAULT '0' NOT NULL
Primarykey: id
Avatar billede avminarm Juniormester
27. maj 2003 - 14:03 #12
hmmm - jeg har lige tænkt lidt - du skal jo være forholdsvis sikker på at dine brugere har statisk IP adresse ellers kan du jo ikke skelne dem fra hinanden!! - jeg ville nok lave sriptet lidt om så det sætter en cookie hvis man er logget ind som bruger og så viser:

online:
rip
rap
rup

5 gæster
Avatar billede exp Juniormester
27. maj 2003 - 14:07 #13
hvis man i loginscriptet gemmer brugerens ip ved login, har du den jo allerede...

og den ligger jo også i online-scriptet, såeh...
Avatar billede n-emy Nybegynder
27. maj 2003 - 14:25 #14
Jeg bruger sessions, er der ikke en der kan ændre i scriptet så jeg får hele scriptet på en gang
Avatar billede exp Juniormester
27. maj 2003 - 14:27 #15
Jeg gav dig opskriften her:

if ($tabel_login['ip'] == tabel_online['ip']) {
  echo $tabel_login['brugernavn'];
} else {
  echo $tabel_online['ip'];
}

Så er det bare op til dig at lave de relevante database-kald... :-)
Avatar billede n-emy Nybegynder
27. maj 2003 - 14:34 #16
sry havde glemt det :p hvor i scriptet skal det sættes ind??
Avatar billede exp Juniormester
27. maj 2003 - 14:35 #17
ind i den while-løkke der normalt udskriver IP'en på online-siden
Avatar billede n-emy Nybegynder
27. maj 2003 - 14:38 #18
Ok, tak for hjælpen:)
Det her har intet med spg at gøre, hvorfor kan man egentlig kun give 200 point som det højeste?? og hvordan tjener man point ud over at svare på andres spg??
Avatar billede exp Juniormester
27. maj 2003 - 14:43 #19
1) Så der ikke bliver for mange pointoverførsler - for at holde pointgivningen på et realistisk niveau

2) Man får 5 point om dagen
Avatar billede exp Juniormester
27. maj 2003 - 14:44 #20
Senere bliver der mulighed for at tjene point hvis man skriver artikler etc.

www.exp.dk/enyt.phtml?id=121 (nederst)
Avatar billede n-emy Nybegynder
27. maj 2003 - 14:52 #21
Jeg ved ikke hva jeg gør galt den virker ikke:
Her er koden ændret:
<?


function InsertUser() {

    global $REMOTE_ADDR, $HTTP_USER_AGENT, $PHP_SELF;

   

    $ip            = $REMOTE_ADDR;

    $host          = gethostbyaddr($ip);

    $browser        = $HTTP_USER_AGENT;

    $page          = $PHP_SELF;

    $time            = explode(" ", microtime());

    $usersec        = (double)$time[1];

    mysql_query("DELETE FROM online_users WHERE ip like '$ip'");

    mysql_query("INSERT INTO online_users (ip,host,date,browser,page) VALUES ('$ip','$host','$usersec','$browser','$page')");

}



function ShowUsers() {



    $time            = explode(" ", microtime());

    $usersec        = (double)$time[1];

    mysql_query("DELETE FROM online_users WHERE date < $usersec -100");

    $countusers    = mysql_fetch_array(mysql_query("SELECT count(*) as total FROM online_users"));

   

    print ('<table class="tekstafsnit" border="0" CELLPADDING="0" CELLSPACING="0">');

    print ('<tr>');

    print ('<td STYLE="border-bottom:1px solid #000000;"><B><font face=verdana size=1>IP adresse:</B></td>');

    print ('<td STYLE="border-bottom:1px solid #000000;"><font face=verdana size=1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>'); 

    print ('<td STYLE="border-bottom:1px solid #000000;"><B><font face=verdana size=1>Host adresse:</B></td>');

    print ('<td STYLE="border-bottom:1px solid #000000;"><font face=verdana size=1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>'); 

    print ('<td STYLE="border-bottom:1px solid #000000;"><B><font face=verdana size=1>Site:</B></td>');

    print ('</tr>');

   

    $result = mysql_query("SELECT * FROM online_users");

    while ($row = mysql_fetch_array($result)) {

        print ('<tr>');

        print ('<td><font face=verdana size=1>'.$row[ip].'</td>');
       
        print ("if ($brugersystem['ip'] == users_online['ip']) {
  echo $brugersystem['brugernavn'];
} else {
  echo $users_online['ip'];
}")

                  print ('<td><font face=verdana size=1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>'); 

        print ('<td><font face=verdana size=1>'.$row[host].'</td>');

                  print ('<td><font face=verdana size=1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>');

        print ('<td><font face=verdana size=1><a href="'.$row[page].'"> '.$row[page].' </a></td>');

        print ('</tr>');

                 

    }

    print ('</table>');



}



InsertUser();

showUsers();



?>

Og her er det den udskriver:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /var/www/html/n-gamez/community/showonline.php on line 176

Linie 170-180:
while ($row = mysql_fetch_array($result)) {

        print ('<tr>');

        print ('<td><font face=verdana size=1>'.$row[ip].'</td>');
       
        print ("if ($brugersystem['ip'] == users_online['ip']) {
  echo $brugersystem['brugernavn'];
} else {
  echo $users_online['ip'];
}")
Avatar billede exp Juniormester
27. maj 2003 - 15:06 #22
while ($row = mysql_fetch_array($result)) {
  print ('<tr>');
  print ('<td><font face=verdana size=1>'.$row[ip].'</td>');
  // kode hvor du henter data fra users_online-tabellen og brugersystem-tabellen
  print ("if ($brugersystem['ip'] == $users_online['ip']) {
  echo $brugersystem['brugernavn'];
} else {
  echo $users_online['ip'];
}")
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