Gå til innhold

Loggføre IP-adresser i tekstfil


Anbefalte innlegg

Hei,

 

jeg prøver å loggført antall besøkende på siden min, som jeg igjen vil vise i en tabell(ip-adresse og antall besøk fra denne ip-adressen).

 

Jeg skal ikke bruke funksjonen 'file'...

 

Bruker for øvrig echo $_SERVER['REMOTE_ADDR']; til å hente IP i dag.

 

Noen tips til hvordan dette bør gjøres?

 

Har prøvd litt med counter og get uten å lykkes helt i å få dette til å fungere.

Lenke til kommentar
Videoannonse
Annonse

Om vi går ut i fra at jeg ikke har snøring så tror jeg dette blir enklere:

- Jeg skal loggføre antall IP'er som kommer inn på siden min, og hvor mange ganger de individuelle adressene har besøkt siden.

- Dette skal lagres i en tekstfil, og ikke i MySQL.

- Jeg må på en eller annen måte hente loggen fra tekstfila og presse det inn i en tabell som skal vises på hjemmesiden.

 

- Jeg har ikke lagd noe kode for dette selv, om vi ser bort i fra hvordan jeg henter ut gjeste-IP($_SERVER osv)

- Jeg skal ikke bruke funksjonen 'file' i denne oppgaven.

 

- Jeg går ut i fra at jeg må bruke 'function counter' og eventuelt $_GET for å hente ut det jeg trenger, men hvordan?

Lenke til kommentar

Har laget et fungerende eksempel :)

Tanken er å lage et array med ipen med verdi = 1. Hvis den finner samme ip igjen plusser den på 1.

 

<meta charset="utf-8">
<?php

$logg = true;

if($logg) {
$fh = fopen('stat.txt', 'a+');
fwrite($fh, $_SERVER['REMOTE_ADDR'] . '|');
fclose($fh);
}

?>

Besøkende statistikk: <br />
<?php

$fil = 'stat.txt';
$content = file_get_contents($fil);

// Legg data i array
$array = explode('|', $content);
// Fjerne tom data på slutten av array
unset($array[count($array)-1]);

$array2 = array();

for($i = 0; $i <= count($array)-1; $i++) {
// Hvis array[ip] eksisterer + på 1 på array[ip]
if(array_key_exists($array[$i], $array2)) {
	$array2[$array[$i]]++;
}
// Hvis array[ip] ikke eksisterer lag array[ip] med verdi = 1
else {
	$array2[$array[$i]] = 1;
}
}

foreach($array2 as $ip => $antall) {
echo 'IP: <strong>' . $ip . '</strong> har besøkt nettsiden <strong>' . $antall . '</strong> ganger.<br>';
}

?>

  • Liker 2
Lenke til kommentar

Serialization er ellers veldig kjekt til småtteri som dette. Du bruker bare et array som loggfører besøkende. Dette hentes frem igjen, endres og lagres på filsystemet ved hjelp av metodene serialize og unserialize. Kort og brutalt:

 

<?php
const LOG_FN = 'log.serialized.dat';

if(!file_exists(LOG_FN)) {
file_put_contents( LOG_FN, serialize(Array()) );
}

function key_inc($key, $arr) {
$arr[$key] = 1 + (array_key_exists($key, $arr) ? $arr[$key] : 0);
return $arr;
}

// log
file_put_contents(
LOG_FN,
serialize(key_inc(
	$_SERVER['REMOTE_ADDR'],
	unserialize( file_get_contents(LOG_FN) )
))
);

// list
foreach(unserialize(file_get_contents(LOG_FN)) as $addr => $n) {
echo $addr . ": " . $n . "<br />";
}
?>

  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...