Gå til innhold

Lage visningsteller som teller unike IPer


Gjest Slettet+6132

Anbefalte innlegg

Gjest Slettet+6132

Så er det atter en fredagskveld, som betyr at jeg sannsynligvis kommer til å kjede meg, og kommer sannsynligvis til å fikse på hjemmesiden min. Problemet mitt for øyeblikket er at visningstelleren min teller hver gang en side er vist, og siden jeg bruker include, og telleren ligger i index så blir denne telleren veldig dum.

 

Det jeg trenger hjelp til er å lage to funksjoner, en "skrivVisninger($ip)" og en "lesVisninger()"

 

skrivVisninger($ip) skal sjekke om besøkerens ip allerede er notert, hvis ikke, så noteres den.

 

lesVisninger() skal brukes for å hente ut antall visninger.

 

Problemet er at jeg ikke aner hvordan jeg skal sope dette sammen, så jeg trenger hjelp. Siden det finnes så mange søte, snille her på forumet, så er det kanskje noen som vil hjelpe? :p

 

PS: Vil helst unngå bruk av SQL, fordi webserveren min har veldig lite RAM (les: ekstremt lite, 48M :blush: ), og SQL'en på routeren loker litt.

 

På forhånd takk,

eRik

Lenke til kommentar
Videoannonse
Annonse

Skjer ikke noe spesielt her hjemme, nå klokken 8, så skriver en kode jeg:

 

<?php
session_start();

if($_SESSION['ses_old'] || $_COOKIE['cookie_old'])
{

}
else
{
// Oppdaterer teller med +1

$_SESSION['ses_old'] = true;
setcookie("cookie_old", true time()+60*60*24, '/');
}
?>

 

Sikkert mange guruer her med en mye bedre løsning, men i allefall et forslag :)

Lenke til kommentar
Gjest Slettet+6132

Takk for at du prøver å hjelpe, men jeg vil kun ha unike visninger. Altså at IPen blir lagret i en flatfil med den ene funksjonen, og besøksantallet blir hentet med den andre ;)

Lenke til kommentar
Gjest Slettet+6132

Nei, les første post litt grundig.

 

skrivVisninger($ip) skal legge $ip i en flatfil hvis den ikke er der fra før.

lesVisninger() skal telle hvor mange iper det er i flatfilen.

Lenke til kommentar

Når jeg først har begynt må jeg fullføre:

 

teller.php

<?php
function skrivVisninger($ip)
{
if(!$iplist = file_get_contents('iplist.txt'))
{
 $newfile = fopen('iplist.txt', 'a+');
 if(!fwrite($newfile))
 {
 	print('Oppretting av iplist.txt misslyktes');
 }
 fclose($newfile);
}

if(!eregi($ip, $iplist))
{
 $newiplist = fopen('iplist.txt', 'a+');
 if(!fwrite($newiplist, $ip.','))
 {
 	print('Skriving til iplist.txt misslyktes');
 }
 fclose($newiplist);
}
}

function lesVisninger()
{
$iplist = file_get_contents('iplist.txt');
print(substr_count($iplist, ','));
}
?>

 

 

Side som viser antall ip'er på listen og registerer nye besøkende:

<?php
include('teller.php');

skrivVisninger($_SERVER['REMOTE_ADDR']);
lesVisninger();
?>

Lenke til kommentar

Hvorfor vil du telle unike ip'er?

Jeg synes at løsningen med session er bedre. Da teller den ikke hver gang den besøkende oppdaterer, men teller dersom den kommer tilbake senere. To besøk, er jo to besøk... Men er vel bare en smakssak. Smaken er jo som kjent som Korea... :cool:

 

Og er det ikke slik at de fleste ikke har fast ip?

Lenke til kommentar

Simenss, har du virker som du har litt peil på proggings.

 

Jeg skulle hatt en liten kode snutt som henter ut to tall fra en string, tallene er alltid på samme plass.

 

Eks:

test 12

det er mellomrom mellom test og 12.

 

Da skal jeg ha tallet 12 som skal hentes ut, og sammenlignes i en if setning...

 

if (tall == 12)

 

Regner med at du tar den på straaaak arm :innocent:

Lenke til kommentar
Simenss, har du virker som du har litt peil på proggings.

Hvis jeg skulle skrevet koden selv ville jeg brukt:

 

<?php
$tekst = 'test 12';

$tall = explode($tekst, ' ');

if($tall[1]==12)
{
// Blablabla
}
?>

 

Men av erfaring tror jeg Torbjørn har bedre erfaring med PHP enn meg, så hans løsning er nok bedre ;)

 

EDIT: Noen småting...

Endret av simenss
Lenke til kommentar

I følge manualen så vil den hente ut alt som ikke er ett desimaltall.

Og i følge funksjonen så vil den bytte ut alt som ikke er ett desimaltall med ingenting og bli stående igjen med ett tall.

 

En ny lærerik dag. :)

 

edit: desimaltall er liksom noe annet enn ett desimal.

Endret av LoS
Lenke til kommentar
I følge manualen så vil den hente ut alt som ikke er ett desimal.

Og i følge funksjonen så vil den bytte ut alt som ikke er ett desimal med ingenting og bli stående igjen med ett tall.

 

En ny lærerik dag. :)

Ja, da lærte jeg også noe i dag :D Hva med:

 

<?php
$tekst = 'test 12';

$tall = substr($tekst,5,100);

if($tall==12)
{
// Blablabla
}
?>

 

Forutsetter at ordet før mellomrommet kun er på fire tegn, og at det ikke kommer noe tekst bak tallet. Egentlig helt elendig, men enkelt å bruke ;)

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...