bruker456281 Skrevet 17. mai 2012 Del Skrevet 17. mai 2012 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
torbjørn marø Skrevet 18. mai 2012 Del Skrevet 18. mai 2012 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. Hva er det du har prøvd sier du? Hva er det du ikke forstår med oppgaven? Lenke til kommentar
bruker456281 Skrevet 18. mai 2012 Forfatter Del Skrevet 18. mai 2012 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
Thomas. Skrevet 18. mai 2012 Del Skrevet 18. mai 2012 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>'; } ?> 2 Lenke til kommentar
Milktea Skrevet 18. mai 2012 Del Skrevet 18. mai 2012 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 />"; } ?> 1 Lenke til kommentar
MikkelRev Skrevet 19. mai 2012 Del Skrevet 19. mai 2012 Med mindre dette er en skoleoppgave, kan Google Analytics anbefales. Her får du all den statistikkinformasjonen du ber om og kan drømme om, og mer i tillegg. Lenke til kommentar
Tom_ Skrevet 20. mai 2012 Del Skrevet 20. mai 2012 Google Analytics er kjempebra men denne kjører et JavaScript på klientsiden og det er derfor veldig enkelt å skru den av og målingene vil ikke bli nøyaktige. Lenke til kommentar
bruker456281 Skrevet 21. mai 2012 Forfatter Del Skrevet 21. mai 2012 Takker for svar! Thomas' løsning fungerte utmerket. Se scriptet i aksjon her: http://edhollic.net/home/?side=leksjon7 Skal prøve Milkea's løsning med serialization nå, for å se om dette fungerer bedre i praksis eller ikke. Tanken er vel å integrere denne funksjonen med admin-panelet jeg holder på å lager for tiden :-) Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå