Gå til innhold

Lage en teller i PHP?


Anbefalte innlegg

Skrevet

Noen som vet hvordan jeg kan lage en teller i php? Hvem som besøker siden. Å den tar bare at 1 visit pr ip pr dag? Slik man ikke kan sitte og refreshe siden så det ser uit som om det har vært 2000 stk på siden

Videoannonse
Annonse
Skrevet

<?php  $fil = 'teller.txt';
 $lf = fopen($fil,"r") or die("Kan ikke lese fra fil: ".$fil);
 $teller = fgets( $lf ); 
  fclose($lf);   
//finner ut om personen har vært her før 
  if(!$_COOKIE['logged2']){  	
      setcookie('logged2',true,mktime(24));  	
      $tf = fopen($fil,'w') or die("Kan ikke skrive til fil: ".$fil);  	
      fwrite($tf, ++$teller);  	
      fclose($tf);  	}  	
     ?>  
<html> 
<head>    
</head>    
<body>  
Antall besøkende er <?php echo $teller; ?>  
</body> 
</html>
 

 

Hei, lagde et lite skript som bruker cookies for å sjekke om personen har vært her det siste døgnet. For å få det til å funke må du lage teller.txt og

skrive 0 på første linje.

Skrevet (endret)

Takk, minc. Der lærte jeg noe ôg. Hvordan man setter en cookie.

 

EDIT: Men det var en ting... Den første delen, før du setter cookien, hvorfor lukker du uten å ha åpnet noe?

Endret av Fjott
Skrevet

Ingen som har noe som dette:

 

 

    »  0 Visits this day

    »  0 Visits this week

    »  0 Visits this month

    »  0 Visits Total

 

Eller noe lignende.

 

Hadde vært flott om scriptet kunne lagre visitene i MySQL database.

Skrevet

Den mest effektive løsningen der vil være å benytte SQL, hvis ikke må man skrive noe som lagrer til flere filer... ellers vil dette være mye unødvendig jobb for en server.

Skrevet

<?php  $fil = 'teller.txt';
$lf = fopen($fil,"r") or die("Kan ikke lese fra fil: ".$fil);
$teller = fgets( $lf );
 fclose($lf);

Dette står øverst i kodesnutten.

Skrevet
Hva mener du med det?

5412394[/snapback]

Filer er ikke akkurat det raskeste man kan holde på med. Spesielt når man skal skrive til filen for (nærmest) hvert eneste besøk. Dvs. at bare en side kan genereres om gangen siden hver side må vente på at fila blir lukket slik at den kan åpnes for skriving igjen. I og for seg får man det samme problemet om man bruker database, men de er vesentlig raskere enn å gjøre det "manuelt".
Skrevet

Nå har ikke jeg lest alle innleggene over, men jeg antar at det fortsatt er snakk om en teller - og skrive til filer. I utgangspunktet vil det være raskere åpne en file og skrive til den enn det vil være å bruke en database. Å skrive til en fil består av følgende:

åpne den,

skrive og

lukke.

 

Bruk av database vil bestå av:

koble til dataserver,

logg inn,

velge database,

sende spørring,

så vil mysql sjekke spørringen (her sjekker SQL serveren ganske mye),

lagre resultatet,

sjekke at noe er lagret (if $result og mysql_affected_rows)

koble fra databasen.

I tillegg må variabler alltid vaskes før de sendes til databasen dersom det er snakk om variabler fra en bruker.

 

Så jeg er litt nyskjerrig på hva du mener Ernie?

Skrevet (endret)

<?php
$sekunder = 300;
$mysql_connect = mysql_connect("server.no","brukernavn","passord");
if(!$mysql_connect)
{return "Kunne ikke koble til database";}
mysql_select_db("databasenavn");
$query = mysql_query("select ip,tid from spam where ip='".$_SERVER["REMOTE_ADDR"]."'");
if($line = mysql_fetch_array($query, MYSQL_ASSOC))
       {
if($line["tid"] <= date("U"))
 {
 }
       else
 {
 return;
 exit;
 }
$query = mysql_query("update spam set tid='".(date("U") + $sekunder)."' where ip='".$_SERVER["REMOTE_ADDR"]."'");
}
else	
{
$query =mysql_query("insert into spam (tid,ip) values ('".(date("U") + $sekunder)."','".$_SERVER["REMOTE_ADDR"]."')");

//	echo $query;
}
?>


 

 

endre litt :) Fjerna driten som tilhørt gjestebok

 

sql tabell:

create table spam (ip VARCHAR(20),tid VARCHAR(20),PRIMARY KEY (ip));

Endret av Axentrix
Skrevet (endret)
Gjestebok? Hva har gjestebok med teller?

5420808[/snapback]

Det har med teller å gjøre, på den måten at "antispamfilteret" mitt fungerer AKKURAT på den måten løsningen her vil fungere;)

Og jeg gidder ikke fjerne resten :p

 

edit: fiksa litt, fornøyd?:p

Endret av Axentrix
  • 2 uker senere...
Skrevet (endret)
Nå har ikke jeg lest alle innleggene over, men jeg antar at det fortsatt er snakk om en teller - og skrive til filer. I utgangspunktet vil det være raskere åpne en file og skrive til den enn det vil være å bruke en database. Å skrive til en fil består av følgende:

åpne den,

skrive og

lukke.

 

Bruk av database vil bestå av:

koble til dataserver,

logg inn,

velge database,

sende spørring,

så vil mysql sjekke spørringen (her sjekker SQL serveren ganske mye),

lagre resultatet,

sjekke at noe er lagret (if $result og mysql_affected_rows)

koble fra databasen.

I tillegg må variabler alltid vaskes før de sendes til databasen dersom det er snakk om variabler fra en bruker.

 

Så jeg er litt nyskjerrig på hva du mener Ernie?

5418093[/snapback]

Ups, har glemt å svare på den her. Må vel smertelig innrømme at jeg nok ikke hadde mitt på det rene her. Etter litt lett testing må jeg nok bite i det sure eplet og konstantere at databaser nok er en del treigere enn filer.

 

Edit: En ting jeg riktig nok ikke testet ut er hva som skjer når man får mange forespørsler samtidig. Mistenker at en database kan ha noen fordeler (cache f.eks) der i forhold til fil, men tviler på at det blir noe annet enn i bestefall dødt løp. Det er et saftig sprang mellom fil og db. Dog, svært lite trolig at slikt vil ha noe å si på en privat side med lite trafikk.

Endret av Ernie

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...