Avatar billede jjdk Nybegynder
16. februar 2005 - 08:44 Der er 37 kommentarer og
1 løsning

Hvilke oplysninger fra hotelbestyrer

Jeg er webmaster på en foreningshjemmeside, og arbejder lidt med en tæller til statistik.
Jeg har fået følgende oplysninger fra "hotelbestyreren" til brug for MySQL: Host- og username samt password.
Er det nok oplysninger, for at der kan arbejdes med MySQL?
Jeg har fundet noget kode på Phpuniverset til en tæller, der viser, hvor mange der er online. Men det virker ikke helt, og jeg har søgt lidt hjælp, hvor jeg har fået svaret, at jeg skal sørge for at databasen er oprettet.
Kan jeg oprette databasen via PHP eller skal jeg gøre det via et FTP-logon?
Avatar billede arne_v Ekspert
16. februar 2005 - 08:52 #1
Du skal også have database navn (på webhotel er det typisk det samme som
konto navnet).

Databasen skal oprettes via MySQL (på webhotel vil den typisk være oprettet)
Avatar billede mungojerrie Nybegynder
16. februar 2005 - 08:52 #2
du skal vel også have en en "host" og en databasenavn

funktionen til at connecte til en mysql ser jo sådan ud:
mysql_connect(host, username, password)

Derefter sætter man den aktive database med:
mysql_select_db(databasenavn)
Avatar billede jjdk Nybegynder
16. februar 2005 - 18:20 #3
Nu har jeg fået oplyst databasenavnet som så er "esbjerg1".
Skal jeg selv oprette den på serveren? og hvordan gør jeg i givet fald.
Den kode jeg anvender, ser sådan her ud, men der er altså fejl på siden: www.fdf.dk/esbjerg1/ny

<?php
print '<font face="helvetica" size="2" color="#000000">';

$mysql_host = "localhost";
$mysql_user = "esbjerg1";
$mysql_password = "xxxxxxx";
$ip = $REMOTE_ADDR;


mysql_connect($mysql_host,$mysql_user,$mysql_password);
mysql_select_db("esbjerg1");
$time = explode(" ",microtime());
$array1 = $time[0];
$array2 = $time[1];

    $r = mysql_fetch_row( mysql_query("SELECT * FROM online_users WHERE ip like '$ip'"));
    if ($r == (false))  {
    mysql_query("INSERT INTO online_users (id,ip,name,date) values ('','$ip','','$array2')");
    }
mysql_query("DELETE FROM online_users where date < $array2 - 400");
$res = mysql_query("SELECT * FROM online_users");
$tal = mysql_num_rows($res);
if ($tal == "1") {
print "1 bruger online ";
}
else {
print $tal;
print " brugere online";
}
?>
Avatar billede arne_v Ekspert
16. februar 2005 - 18:27 #4
Databasen er formentligt oprettet.

Det er din SELECT statement den er gal med.
Avatar billede arne_v Ekspert
16. februar 2005 - 18:28 #5
Hvor skulle $ip blive sat henne ?
Avatar billede jjdk Nybegynder
16. februar 2005 - 18:42 #6
Til Arne.
Tak for hjælp, men jeg fatter ikke meget af det. Det er noget kode, jeg har fundet i PHP-universet: http://www.phpuniverset.dk/show_source.phtml?script_id=8, og jeg har kun ændret på Host- og username, password og nu også databasenavnet.
Kan jeg via FTP-program se om databasen er oprettet?
Avatar billede arne_v Ekspert
16. februar 2005 - 19:44 #7
Den bliver også sat:

ip = $REMOTE_ADDR;

Men prøv og erstat den med:

ip = $_SERVER['REMOTE_ADDR'];
Avatar billede arne_v Ekspert
16. februar 2005 - 19:45 #8
Nej du kan ikke checke din database via FTP.

Men den er der - ellers ville du få en anden fejl.
Avatar billede jjdk Nybegynder
16. februar 2005 - 19:55 #9
Jeg har gjort som nævnt.
Efter dette kan jeg slet ikke se siden, men får en fejl i linje 151. Det er den linje, som jeg har ændret.
Avatar billede arne_v Ekspert
16. februar 2005 - 19:58 #10
Det er mig som copy paster elendigt !

$ip = $_SERVER['REMOTE_ADDR'];
Avatar billede jjdk Nybegynder
16. februar 2005 - 20:08 #11
Nu bliver siden vist igen, men jeg har jeg fejl i følgende linjer:
160 -     $r = mysql_fetch_row( mysql_query("SELECT * FROM online_users WHERE ip like '$ip'"));

166 - $tal = mysql_num_rows($res);
Avatar billede arne_v Ekspert
16. februar 2005 - 20:13 #12
Har du oprettet tabellen online_users ?
Avatar billede jjdk Nybegynder
16. februar 2005 - 20:26 #13
Beklager meget, men jeg er altså "super-novice" i MySQl
Jeg har kun lagt ovenstående kode ind i min HTML-fil samt kopieret filen "Mysql_tabel.sql ind i samme mappe, som html-filen.
Filen indeholder følgende kode:
CREATE TABLE online_users (
  id int(11) NOT NULL auto_increment,
  ip varchar(100) NOT NULL default '',
  date varchar(100) NOT NULL default '',
  name varchar(50) NOT NULL default '',
  KEY id (id)
) TYPE=MyISAM;

Øhh - jeg har vist dummet mig. Er det ikke koden til at oprette filen?
Hvis ja, hvordan anvender jeg så den kode? Skal den ind i en html-fil for at virke?
Avatar billede arne_v Ekspert
16. februar 2005 - 20:28 #14
CREATE TABLE online_users (
  id int(11) NOT NULL auto_increment,
  ip varchar(100) NOT NULL default '',
  date varchar(100) NOT NULL default '',
  name varchar(50) NOT NULL default '',
  KEY id (id)
) TYPE=MyISAM;

skal køres inden scriptet virker.

F.eks. via PHPMyAdmin !
Avatar billede jjdk Nybegynder
16. februar 2005 - 20:32 #15
PHPMyAdmin - er det et program, som jeg skal have installeret på min egen computer, hvorfra jeg så genererer tabellen, hvorefter jeg via FTP overfører den til hjemmesiden?
Avatar billede arne_v Ekspert
16. februar 2005 - 20:34 #16
Nej det er noget som formentlig kører på jeres web hotel !
Avatar billede jjdk Nybegynder
16. februar 2005 - 21:20 #17
OK - det er også lykkedes mig, at finde det. Og jeg har oprettet tabellen med 4 felter / akkurat som vist ovenfor. Typen er ogsaa paa plads, men linjen KEY id kan jeg ikke faa genereret.
Avatar billede arne_v Ekspert
16. februar 2005 - 21:24 #18
Bare marker id som primary key !
Avatar billede jjdk Nybegynder
16. februar 2005 - 21:48 #19
Det ser ud til at virke nu, men den kan kun tælle til 1. Og lige for et øjeblik siden, talte den til 0, selvom både min bror og jeg, lige havde loadet siden.
Avatar billede arne_v Ekspert
16. februar 2005 - 21:50 #20
I sidder vel ikke bag samme firewall/router ?

(den tæller eksterne IP adresser !)
Avatar billede jjdk Nybegynder
16. februar 2005 - 21:53 #21
Nej - vi er 50 km. fra hinanden og er på hvert vores netværk.
Den skal vel ikke ikke tælle til 0 - det må da som minimum altid være 1 eller flere.
Avatar billede arne_v Ekspert
16. februar 2005 - 22:01 #22
Jeg tror at det er den delete som laver kage i det.
Avatar billede arne_v Ekspert
16. februar 2005 - 22:02 #23
Et test:

varchar felt < sekunder - 400

virker lidt suspekt
Avatar billede jjdk Nybegynder
16. februar 2005 - 22:11 #24
Jeg forstår heller ikke hvad "$array1 = $time[0];" anvendes til.
Avatar billede arne_v Ekspert
16. februar 2005 - 22:16 #25
Det er mikro sekunder og de bruges ikke.
Avatar billede jjdk Nybegynder
16. februar 2005 - 22:25 #26
Jeg skal lige forstå dit svar kl. 22:02.
Mener du at jeg skal afteste noget - jeg forstår ikke helt.
Avatar billede arne_v Ekspert
16. februar 2005 - 22:28 #27
Det er det test som din kode laver.

Og jeg forstår ikke det test.
Avatar billede jjdk Nybegynder
16. februar 2005 - 22:35 #28
Jeg forstår det sådan, at "date" bliver sat til tidspunktet for indlæsningen af siden og at der så pliver oprettet en post.
Hvis koden afspilles igen (ved at en anden IP indlæsser) registreres en ny "date" og hvis der findes poster i tabellen, der er mere en 400 sekunder gamle, skal de slettes.
Avatar billede jjdk Nybegynder
17. februar 2005 - 21:41 #29
Underligt nyt
Når jeg tjekker tabellen "online_users" kan jeg se, at det altid er den samme IP-adresse, der registeres, nemlig 172.16.0.12. Jeg har slettet indholdet af tabellen og prøvet fra 3 andre computere ( 1 i Esbjerg, 1 i Ansager, 1 i Gørding), som med sikkerhed har forskellige IP-adresser.
Kan det være serverens IP-adresse der "fanges".
Avatar billede arne_v Ekspert
17. februar 2005 - 21:48 #30
Du har vel ikke en NART router/firewall foran så det er dens adresse PHP ser ?
Avatar billede jjdk Nybegynder
17. februar 2005 - 21:54 #31
Jamen - vi har jo prøvet at indlæse siden fra 3 forskellige PC'ere - alle 3 med forskellige netværkssystem (kabelnet, ADSL, MPLS).
Kan det være webhotellet, der har et filter/firewall, som PHP i virkeligheden læser?
Er der andre måder at skelne på - i stedet for IP-adressen?
Avatar billede arne_v Ekspert
17. februar 2005 - 21:59 #32
172.16.0.12 er en intern adresse bagved NAT router/firewall.
Avatar billede arne_v Ekspert
17. februar 2005 - 22:02 #33
Men jeg synes nu ikke at den burde ændre $_SERVER['REMOTE_ADDR'] selvom den skal
gennem NAT.

Mystisk !
Avatar billede jjdk Nybegynder
17. februar 2005 - 22:03 #34
Men er vi ikke enige om, at det må være på web-hotellet problemet er.
Avatar billede arne_v Ekspert
17. februar 2005 - 22:09 #35
Det kunne ihvertfald være interessant at vide hvad de mener  $_SERVER['REMOTE_ADDR']
bør indeholde
Avatar billede jjdk Nybegynder
17. februar 2005 - 22:18 #36
Du skal i hvert fald have mange tak for din hjælp og TÅLMODIGHED.
Send lige et svar - så jeg kan give point.
Avatar billede arne_v Ekspert
17. februar 2005 - 22:33 #37
svar
Avatar billede jjdk Nybegynder
18. februar 2005 - 09:46 #38
Nu har jeg også fået det til at virke.
Jeg har haft fat i Hotelbestyreren, og jeg skal i stedet anvende følgende kald:
$_SERVER["HTTP_X_FORWARDED_FOR"]
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
Computerworld tilbyder specialiserede kurser i database-management

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