Avatar billede schjerbeck Nybegynder
03. februar 2007 - 18:23 Der er 47 kommentarer

Hvordan laver man en besøgstæller ?

Jeg vil hører hvordan man koder en besøgstæller?
jeg ved godt der findes de færdiglavet, dem vil jeg osse godt have, vis der ikke er reklame for selve siden ;)?

-kan du hjælpe mig :P?
Avatar billede sw_red_6 Nybegynder
03. februar 2007 - 18:28 #1
der er vidst noget med at chart.dk findes i en udgave som man ikke kan se, men har ikke selv brugt det og det er _meget_ lang tid siden jeg har kigget på det..
Avatar billede old-faithful Praktikant
03. februar 2007 - 18:38 #2
Der findes nogle meget simple scripts som kan tælle for dig via flat files (dvs. en tekstfil der ligger på serveren).

Se f.eks.:
- http://www.weberdev.com/get_example-3907.html
- http://www.greycobra.com/tutorials/easy-flat-file-hit-counter/page-1.html
Avatar billede old-faithful Praktikant
03. februar 2007 - 18:39 #3
.. i øvrigt har mange webhotel-udbydere stats, hvor du også kan følge trafikken.
Avatar billede simplus Nybegynder
03. februar 2007 - 18:50 #4
Med hensyn til hvordan du koder en er det ikke svært hvis du har kendskab til MySQL?
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 18:51 #5
Det er ikke noget jeg har noget specielt kendskab til
Avatar billede simplus Nybegynder
03. februar 2007 - 18:53 #6
Altså, det hele kan gøres rimlig nemt, jeg skal lige høre, vil du have unikke hits eller bare hits?
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 18:54 #7
Ved jeg ikke ;) det er ligemeget, bare jeg på en eller anden måde kan få fat i en besøgstæller er jeg tilfreds :P
Avatar billede old-faithful Praktikant
03. februar 2007 - 18:58 #8
Dem jeg nævner er relativt smertefrie at sætte op og meget simple. Du skal stort set bare indsætte koden i en .php fil og så uploade (en PHP-fil kan være en almindelig HTML-fil omdøbt til endelsen .php).
Avatar billede simplus Nybegynder
03. februar 2007 - 19:07 #9
Jeg har lavet et udkast, det er ikke testet så der kan opstå fejl, det eneste du selv skal gøre er:

1. indskrive dine login oplysninger til MySQL i starten af filen
2. oprette 2 tabeller, som du angiver navnene på i min kode på linie 5 og 6

de to tabeller skal hver indeholde 1 række
tabel1 skal indeholde rækken `ip`
tabel2 skal indeholde rækken `antal`


<?php
mysql_connect('localhost','username','password');
mysql_select_db('databasenavn');

$tabel1 = "TabelNavn1"; // indeholder ip's
$tabel2 = "TabelNavn2"; // indeholder hits

///////// alt herunder skal ikke rettes

    $ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);

    $soeg_hits = mysql_query("SELECT ip FROM $tabel1 WHERE ip = '$ip'") or die(mysql_error());
    $fundnehits = mysql_num_rows($soeg_hits);
        if ($fundnehits > 0){
            echo "&nbsp;";
        }else{

            $taelantal = mysql_query("SELECT antal from $tabel2") or die(mysql_error());
            while ($skrivantal=mysql_fetch_array($taelantal)){
                $newantal = $skrivantal[antal];
            }

            $newantal = $newantal+1;

            mysql_query("UPDATE $tabel2 SET `antal`='$newantal'") or die(mysql_error());


        }

?>
Avatar billede simplus Nybegynder
03. februar 2007 - 19:08 #10
den burde så tælle unikke hits, med mindre brugeren ikke har en statisk ip, men sådan noget kan man næsten ikke undgå! :-)
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 19:17 #11
har lige et spørgsmål, hvor vil du have jeg skal alve de der to tabeller ;)?
Avatar billede old-faithful Praktikant
03. februar 2007 - 19:20 #12
Han vil have du skal oprette tabeller i dit MySql kontrolpanel, men jeg synes nu stadig det er lettere at lave flat-file ;-)
Avatar billede simplus Nybegynder
03. februar 2007 - 19:22 #13
Du kan evt. bare køre følgene php fil:

<?php
mysql_query("CREATE TABLE `ips` (`ips` varchar(255) NOT NULL);");
mysql_query("CREATE TABLE `hits` (`antal` varchar(255) NOT NULL);");
?>
Avatar billede simplus Nybegynder
03. februar 2007 - 19:22 #14
Så opretter den det selv! Så skal du kun rette følgene i den tidligere kode:

ret dette:

$tabel1 = "TabelNavn1"; // indeholder ip's
$tabel2 = "TabelNavn2"; // indeholder hits

til dette:

$tabel1 = "ips"; // indeholder ip's
$tabel2 = "hits"; // indeholder hits
Avatar billede simplus Nybegynder
03. februar 2007 - 19:23 #15
old-faithful, det er som man tager det. Jeg synes det er mere praktisk at have det i en database :-)
Avatar billede old-faithful Praktikant
03. februar 2007 - 19:24 #16
Naturligvis :-)
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 19:33 #17
Du vil have jeg først skal lave en ph-fil med det her:
<?php
mysql_connect('localhost','username','password');
mysql_select_db('databasenavn');

$tabel1 = "ips"; // indeholder ip's
$tabel2 = "hits"; // indeholder hits

///////// alt herunder skal ikke rettes

    $ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);

    $soeg_hits = mysql_query("SELECT ip FROM $tabel1 WHERE ip = '$ip'") or die(mysql_error());
    $fundnehits = mysql_num_rows($soeg_hits);
        if ($fundnehits > 0){
            echo "&nbsp;";
        }else{

            $taelantal = mysql_query("SELECT antal from $tabel2") or die(mysql_error());
            while ($skrivantal=mysql_fetch_array($taelantal)){
                $newantal = $skrivantal[antal];
            }

            $newantal = $newantal+1;

            mysql_query("UPDATE $tabel2 SET `antal`='$newantal'") or die(mysql_error());


        }

?>

Og så skal jeg selfølgelig rette på det øverste der,
Derefter skal jeg så oprette en anden php-fil? med det her:
Du kan evt. bare køre følgene php fil:

<?php
mysql_query("CREATE TABLE `ips` (`ips` varchar(255) NOT NULL);");
mysql_query("CREATE TABLE `hits` (`antal` varchar(255) NOT NULL);");
?>

Er det rigtigt, eller er jeg langt væk ;)?
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 19:36 #18
php-fil skulle der står øverst :P
Avatar billede simplus Nybegynder
03. februar 2007 - 19:41 #19
Du er næsten på rette spor.

men den sidste php fil skal kun gemmes og køres 1 enkel gang. Så er tabellerne oprettet og du skal/kan derefter slette filen (det er klogest, da den ikke er beskyttet).

med hensyn til resten så er det perfekt, bare husk at rette login oplysninger til mysql
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 19:51 #20
det du mener med at køre den, er at putte den ind som en side, og så gåind på den side, eller hvad? ;)
Avatar billede simplus Nybegynder
03. februar 2007 - 19:52 #21
Lige præcis
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 19:55 #22
jeg har lavet den der nederste php-fil
og sat den ind på siden, og derefter gået ind på sinde ;) men så kommer der bare en masse 'warnings' ;) er det rigtigt :P?
Avatar billede simplus Nybegynder
03. februar 2007 - 20:03 #23
ja, det er fordi du lige skal connecte til MySQL først.. brug denne:

<?php
mysql_connect('localhost','username','password');
mysql_select_db('databasenavn');

mysql_query("CREATE TABLE `ips` (`ips` varchar(255) NOT NULL);");
mysql_query("CREATE TABLE `hits` (`antal` varchar(255) NOT NULL);");
?>

bare husk at ændre login
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 20:10 #24
Den der du lige har skrevet fik jeg vist lavet rigtigt, for da jeg gik ind på siden stod der ikke noget mere ;)
men den næste jeg lavede stod der det her på siden da jeg gik ind på den :
Unknown column 'ip' in 'field list'
Avatar billede simplus Nybegynder
03. februar 2007 - 20:12 #25
Så er det fordi felterne ikke blev oprettet, har du overhovedet MySQL installeret?
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 20:13 #26
Det er på hjemmesiden du mener, ikk?? :P
Avatar billede simplus Nybegynder
03. februar 2007 - 20:28 #27
Jo
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 20:29 #28
Jeg har oprettet en mysql på hjemmesiden ;)
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 20:30 #29
men kan det ikke være fordi vi har kald tabellenn 'ips' og længere nede står der 'ip' kun, det er bare et gæt, for jeg har ikke vildt meget forstand på det ;)
Avatar billede simplus Nybegynder
03. februar 2007 - 20:33 #30
Jo, jeg kom til at sætte et lille s på, du kan enten tilsætte et s hvor der mangler ellers kan du slette tabellerne og køre denne fil istedet:

<?php
mysql_connect('localhost','username','password');
mysql_select_db('databasenavn');

mysql_query("CREATE TABLE `ips` (`ip` varchar(255) NOT NULL);");
mysql_query("CREATE TABLE `hits` (`antal` varchar(255) NOT NULL);");
?>
Avatar billede simplus Nybegynder
03. februar 2007 - 20:42 #31
Virker det?
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 20:43 #32
er lige igang med at tjekke ;)
er færdig om lidt ;)
Avatar billede simplus Nybegynder
03. februar 2007 - 20:44 #33
Ok, men husk at resultatet ikke bliver udskrevet endnu, det hjælper jeg med når du er færdig
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 20:53 #34
Den siger det samme :S Unknown column 'ip' in 'field list'
Avatar billede simplus Nybegynder
03. februar 2007 - 20:55 #35
hvis tabellen stadig hedder ips så virker denne:

<?php
mysql_connect('localhost','username','password');
mysql_select_db('databasenavn');

$tabel1 = "ips"; // indeholder ip's
$tabel2 = "hits"; // indeholder hits

///////// alt herunder skal ikke rettes

    $ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);

    $soeg_hits = mysql_query("SELECT ips FROM $tabel1 WHERE ips = '$ip'") or die(mysql_error());
    $fundnehits = mysql_num_rows($soeg_hits);
        if ($fundnehits > 0){
            echo "&nbsp;";
        }else{

            $taelantal = mysql_query("SELECT antal from $tabel2") or die(mysql_error());
            while ($skrivantal=mysql_fetch_array($taelantal)){
                $newantal = $skrivantal[antal];
            }

            $newantal = $newantal+1;

            mysql_query("UPDATE $tabel2 SET `antal`='$newantal'") or die(mysql_error());


        }

?>
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 20:59 #36
Ja så virker det da ;)
så er det næste del :P?
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 21:00 #37
der er i hvert fald intet på nogen af de to sider
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 21:04 #38
og har slettet den med de der tabeller nu ;)
Avatar billede simplus Nybegynder
03. februar 2007 - 21:13 #39
Jeps, så udskriver du hitsene på en ny fil med følgene indhold:

<?php
mysql_connect('localhost','username','password');
mysql_select_db('databasenavn');

$tabel2 = "hits"; // indeholder hits

            $taelantal = mysql_query("SELECT antal from $tabel2") or die(mysql_error());
            while ($skrivantal=mysql_fetch_array($taelantal)){
                $antal = $skrivantal[antal];
            }

echo "Hits: ".$antal;

?>
Avatar billede simplus Nybegynder
03. februar 2007 - 21:33 #40
? :-)
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 22:40 #41
Nu står der 'Hits:' (jeg gemte det du har skrevet øverst som en php fil ? ;)
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 23:02 #42
jeg probber bare koden ind i mit html, og kalder filen index.php og så ligger den sig forrest, men der er et problem, der står kun 'hits:' der mangler ligesom hvor mange hits der har været ;)?
Avatar billede old-faithful Praktikant
03. februar 2007 - 23:10 #43
Det kunne lyde som om der ikke bliver sat noget ind i "$antal"-variablen. Har du husket et "echo" foran?

Hvis du skulle have lyst til at prøve den ikke-MySql metode jeg nævner, så er det bare at indsætte dette kodestykke, og så har du en tæller:

    <?php
    $file = 'hits.txt';
    if (!is_writable($file)) die('not writable');
    $current = trim(file_get_contents($file)) + 1;
    fwrite(fopen($file, 'w'), $current);
    echo $current;
    ?>
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 23:13 #44
hvad mener du med echo foran? ;)

jeg tog den her:
<?php
mysql_connect('localhost','username','password');
mysql_select_db('databasenavn');

$tabel2 = "hits"; // indeholder hits

            $taelantal = mysql_query("SELECT antal from $tabel2") or die(mysql_error());
            while ($skrivantal=mysql_fetch_array($taelantal)){
                $antal = $skrivantal[antal];
            }

echo "Hits: ".$antal;

?>
(ændrede selfølgelig på login tingende øverst)
og så kom der kun til at stå 'Hist:' ;)?
Avatar billede schjerbeck Nybegynder
03. februar 2007 - 23:18 #45
Hvis man bruger den du lige har skrevet, så kommer der bare til at stå, 'not writable' ;)?
Avatar billede old-faithful Praktikant
03. februar 2007 - 23:25 #46
Prøv at oprette en tekstfil der hedder "hits.txt" og uploade den til samme mappe som du har scriptet i.

Hvis det stadig ikke virker, så kan du prøve at CHMOD'e i et FTP-program, dvs. ændre Egenskaberne for filen (nærmere bestemt skriverettigheder).
Avatar billede schjerbeck Nybegynder
05. februar 2007 - 14:45 #47
Har du fundet ud af hvad der er galt :P?
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