Skriva till diverse platser i textfiler..

PHP

7 svar · 321 visningar · startad av Matti

Medlem sedan dec. 19996 592 inlägg
Trådstart#1

Hm.. jag har gjort en liten statistik sida eller vad man nu ska kalla det för på min hemsida som skriver alla $http_referers till en textfil.. nu är det ju så att ofta har referrern samma adress (om besökaren kommer från tex. altavista) och då blir det ju onödigt många likadan textrader.. så jag undrar om det på något sätt skulle gå att göra så att raderna i textfilen skulle se ut typ så här:
http://www.blabla.com/test.html -- 50
http://www.yahoo.se/links.html -- 30
http://www.webforum.nu/inlagg.html --12

..där siffran skulle motsvara antalet besökare från den specifika adressen. Jag har inte tillgång till någon databas.. går det att göra med en textfil?

Medlem sedan apr. 20003 971 inlägg
#2

Läs in hela filen med file() och gå igenom den rad för rad.

Medlem sedan dec. 19996 592 inlägg
#3

Ok.. vet hur man läser in filen.. men sen då? Exempel? ;)

/me fattar 0 annars..

Medlem sedan apr. 20003 971 inlägg
#4

Ungefär så här. Resten får du skriva själv ;)

// Läs in
$file = file("matti.txt");

// Ändra
foreach( $file as $line)
{
if($line = $adress)
...
}
// Om den inte finns
$file[] = "$adress - 1";

// Spara
$fp = fopen("matti.txt", "w");
foreach( $file as $line)
fwrite($fp, $line);
fclose($fp);

Medlem sedan dec. 19996 592 inlägg
#5

Hmm.. snurrigt.. men jag ska försöka.. :e

Medlem sedan dec. 19996 592 inlägg
#6

men hm.. hur ändrar jag talet efter adressen.. *dum* ;)

Medlem sedan feb. 20001 050 inlägg
#7

Så här kanske :)

<?
// counter.php3 ::: [url="http://www.nic-sys.se"]www.nic-sys.se[/url] 
$countfile = "sökväg/count.txt";
$url=$HTTP_REFERER;
$written=FALSE;
if (file_exists($countfile)){
  $temparray = file($countfile);
  for($index = 0; $index < count($temparray); $index++){
    $entry = explode(" ",$temparray[$index]);
    if(!strcmp($entry[0],$url)){
      $entry[2]++;
      $tempentry = $entry;
      $temparray[$index] = implode($entry," ");
      $fp = fopen($countfile,"w");
      for($index = 0; $index < count($temparray); $index++)
        fputs($fp,$temparray[$index]);
      $written = TRUE;
      fclose($fp);
    }
  }
  if($written == FALSE){
    $entry = "$url -- 1 <br>\n";
    $fp = fopen($countfile,"a");
    fputs($fp,$entry);
    fclose($fp);
  }
}else{
  exit("Fel: $countfile saknas!");
}
?>

Testsida:

<html>
<body>
Count file:<br>
<? include "counter.php3" ?>
<? include "count.txt" ?>
</body>
</html>

Filen count.txt skall vara tom och skrivbar!

/nicclas @ http://www.nic-sys.se

[Redigerat av nicclas den 26 jul 2000]

Medlem sedan dec. 19996 592 inlägg
#8

muhaha! :e
nicclas, du knäcker! ;)

Tack :)

263 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)