Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kävijälaskuri .txt / php

Vasta_alkaja [30.12.2007 15:18:50]

#

Tässä olisi tarkoitus olla kävijälaskuri, joka kerää talteen ns. uniikit, eli eri ip:n omaavat kävijät. Mutta näyttäisi siltä, että mielestäni kävijöitä on liikaa :D. Tai sitten ei, mutta ajattelin, että jos teillä on aikaa katsoa, toimiiko tämä oikein niin olisin kiitollinen.

<?php
        # Sivuston kävijälaskuri.
        # Tiedostoon **.txt kerätään uniikit kävijätiedot ip-osoitteiden perusteella
        # Tiedostoon **.txt kerätään kävijätiedot f5- taktiikalla,
        # eli aina kun sivu latautuu uudelleen

        # Tiedostojen sijainnit
        $file_location="ip.txt";
        $file_location_two="all.txt";

        # Tarkistetaan selaimen ip-osoite
        $ipAddress= $_SERVER['REMOTE_ADDR'];

        $file = file($file_location);

        # Ip osoitetta ei olla alustavasi löydetty.
        $ei_loydetty = true;

        for($i=0; $i < count($file); $i++)

        if($ipAddress == trim($file[$i]))
        {
            # Ip -osoitetta on löydetty joten asetaan muuttujan arvoksi false,
            # jotta voidaan matka katkeaa
            $ei_loydetty = false;

            # A kirjain avaa tiedoston vain kirjoittamista varten.
            $fl2 = fopen($file_location_two, "a");

            # Kirjoitetaan tiedostoon
            fwrite($fl2, '1' ."\r\n");
            break;
        }

        # Tiedostoa ei ole läydetty, jatketaan matkaa tästä
        if($ei_loydetty == true)
        {
            # Jos tiedostoa ei ole vielä olemassa, luodaan se.
            $fl = fopen($file_location, "a");

            # Kirjoitetaan tiedostoon
            fwrite($fl,$ipAddress."\r\n");
        }

        # Lasketaan kävijät
        $calculate = count(file($file_location));

        # Lasketaan kävijät 2
        $calculate2 = count(file($file_location_two));

        echo '<font style="font-family:arial; color:white;">Sivuillamme on vieraillut <b>'. $calculate .'</b> käyttäjää.</font><br/>';
        ?>

ville-v [30.12.2007 15:32:49]

#

Silmukan jälkeen ei ole aaltosulkua:

for($i=0; $i < count($file); $i++)

Tällöin silmukassa suoritetaan ainoastaan sitä seuraava if-lause. Tämä kuitenkin lähemmän tarkastelun jälkeen vaikuttaa tarkoitukselliselta, onko se?

Muuta virhettä en koodin perusteella löytänyt, kokeilepa vaikka laittaa silmukan sisään rivit

echo $ipAddress;
echo trim($file[$i]);

niin saat niitä arvoja esille ja näet onko if-lause koskaan tosi. Ehkä trim() korvaa jotain väärin, esimerkiksi rivinvaihdon välilyönnillä? Tällöin voi toimia

if($ipAddress == str_replace(" ", "", trim($file[$i]));

Jos et tee kävijälaskuria tekemisen ilosta vaan tarpeeseen, kannataa ottaa käyttöön varmasti toimiva ja monipuolinen: https://www.ohjelmointiputka.net/koodivinkit/24720-php-monipuolinen-kävijälaskuri-v2

Vasta_alkaja [31.12.2007 01:13:18]

#

Tekemisen ilosta tätä teen ja jos vika löytyy, niin siitä sitä iloa vasta saa. Jos on vikaa. :D. Mutta sulut puuttuvat vahingossa ja pitääpä huomenna tarkistaa mitä se sen jälkeen sanoo.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta