Gå til innhold

Script som viser antall klikk på link


Anbefalte innlegg

Jeg kunne tenke meg et script som viser hvor mange ganger en ekstern link har blitt brukt.

 

Eneste jeg kan komme på en er switch-case pr link som skriver til en fil, men det høres ganske så tungvint ut. Bør da være noe som er mye lettere.

 

Noen som kan sette meg i gang med noe? Samme om det er via mySQL eller flatfil.

 

 

Mvh, Martin

Lenke til kommentar
Videoannonse
Annonse

Lag mappen "telling" og chmod 777.

$file = basename($_GET['file']);
if empty($file) die("No file selected!");

$fp = fopen("./telling/$file.txt","r"); 
$count = fread ($fp, filesize ("./telling/$file.txt"));
fclose($fp);
$count++;
$fp = fopen("./telling/$file.txt","w");
fwrite($fp, $count);
fclose($fp);
header("Location: http://server.com/filer/$fil");

 

Link: <a href="lastned.php?fil=filnavn.exe">Link</a>

 

PS:

Skrev det nå, ikke testet!

 

Edit:

Må lære meg å lese, trodde det var et script for å telle antall nedlastinger av en fil jeg. :(

Endret av ZoRaC
Lenke til kommentar

Tenkte på noe ala "?side=rallrall&go=2", så øker den feks "2.txt" med en, og videresender brukern til "dagbladet.no".

 

Men da kan jeg jo fortsatt bruke noe lignende, men hvordan blir det da når header(Location) er forskjellig fra link til link?

Å skrive hele URL til siden i linken er uaktuelt.

Lenke til kommentar

$side[] = "dagbladet.no";
$side[] = "vg.no";
$side[] = "google.no";

$goto = $_GET['side'];
$goto_url = $side[$goto];

if (empty($goto_url)) die("Invalid site selected!");

$fp = fopen("./telling/$goto.txt","r"); 
$count = fread ($fp, filesize ("./telling/$goto.txt"));
fclose($fp);
$count++;
$fp = fopen("./telling/$goto.txt","w");
fwrite($fp, $count);
fclose($fp);
header("Location: http://www.$goto_url");

 

Noe sånt kanskje?

 

Edit:

Dagbladet blir da script.php?goto=0

Vg blir da script.php?goto=1

osv

Endret av ZoRaC
Lenke til kommentar

Auda, ble vist ikke så lett dette.

 

Ble problematisk når jeg blanda inn andre get-variabler.

bruker jeg feks "side=tull&go=3" får jeg dette

Fatal error: [] operator not supported for strings in /bane/til/telling.php on line 3

Og på linje 3 har jeg "$side[] = "diskusjon.no/";".

 

Prøvde først å putte inn denne:

if(isset($goto) && !empty($goto) && !empty($goto_url)) {

for å hindre lesing og skriving av fil uten at get-go var aktiv.

Noe som heller ikke funktet helt ypperlig.

Så prøvde vi med inkluderingen av skriptet.

 

if(isset($_GET['go'])) {
   include('telling.php';
}

 

Så fikk jeg høre av noen på IRC at jeg måtte bruke array(). Ok, men jeg har aldri brukt array i noen sammenhenger, så det er helt nytt for meg.

Titta i manualen, og ble ikke klokere av det. Men litt lenger ned så ser jeg dette.

 

If you are creating an array with a large number of static items, you will find serious performance differences between using the array() function and the $array[] construct. For example:

<?
// Slower method
$my_array = array(1, 2, 3, � 500);

// Faster method
$my_array[] = 1;
$my_array[] = 2;
$my_array[] = 3;
�
$my_array[] = 500;
?>

Det vil jo da si at det skal gå ann å gjøre det slik jeg gjør det.

 

Om det har noe å si, så kjører servern PHP 4.4.2.

 

 

EDIT: Det funker om man kjører get-go alene. Men den øker ikke filen.

Og hvorfor bruker du "filesize()" inni "fread()"?

Endret av M4rTiN
Lenke til kommentar

<?php

$side[] = "www.begin.no";
$side[] = "www.diskusjon.no/";
$side[] = "www.start.no/tegneserier/m/";
$side[] = "www.dagbladet.no/tegneserie/pondus/";
$side[] = "www.dagbladet.no/tegneserie/nemi/";
$side[] = "www.dagbladet.no/tegneserie/rocky/";


$goto = $_GET['go'];
$goto_url = $side[$goto];

if (isset($goto) && empty($goto_url)) {
die("Invalid site selected!");
}

if(isset($goto) && !empty($goto) && !empty($goto_url)) {

$fp = fopen("./data/telling/$goto.txt","r");
$count = fread ($fp, filesize ("./data/telling/$goto.txt"));
fclose($fp);
$count++;

$fp = fopen("./data/telling/$goto.txt","w");
fwrite($fp, $count);
fclose($fp);
header("Location: http://$goto_url");
}
?>

 

Slik ser den ut nå.

 

Skal prøve ut at den legger til ip-adresse ellerno, og at den teller antall linjer i fila i stede.

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