Gå til innhold

Lage en teller i PHP?


Anbefalte innlegg

Videoannonse
Annonse

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

Lenke til kommentar
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".
Lenke til kommentar

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?

Lenke til kommentar

<?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
Lenke til kommentar
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
Lenke til kommentar
  • 2 uker senere...
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
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...