Si possono salvare le informazioni su un database e poi visualizzarle. Se mi dai un attimo ti scrivo uno script che, più o meno, dovrebbe fare quello che chiedi.
EDIT: Ecco a te, testato e funzionante. Ci sono tre file. Il primo, click.php, assegna i voti e reindirizza all'URL votato, nel caso l'IP non abbia già votato per quell'URL. Deve contenere questo (il codice è commentato):
Codice PHP:
<?php
// include il file di configurazione
require('config.php');
// recupera l'URL da cliccare
$url = mysql_real_escape_string($_GET['url'], $conn);
// controlla che l'URL non sia vuoto
if($url == '')
die('Hai specificato un URL vuoto.');
// controlla che non ci sia un voto da questo IP
$query = @mysql_query("SELECT * FROM clicks WHERE url='{$url}' AND ip='{$_SERVER['REMOTE_ADDR']}'") or die(mysql_error());
if(@mysql_num_rows($query) == 1)
die('Hai già votato per questo URL.');
// altrimenti aggiunge un voto
@mysql_query("INSERT INTO clicks (ip,url) VALUES ('{$_SERVER['REMOTE_ADDR']}','{$url}')") or die(mysql_error());
// reindirizza all'URL
header("Location: {$url}");
?>
Il secondo, stats.php, visualizza le visite assegnate ad ogni URL (per motivi di sicurezza non visualizza gli IP da cui provengono, fammi sapere se ti serve):
Codice PHP:
<?php
// include il file di configurazione
require('config.php');
// recupera tutti gli URL
$query = @mysql_query("SELECT * FROM clicks") or die(mysql_error());
// crea un array per memorizzare i dati
$data = array();
// salva tutti i dati
while($assoc = @mysql_fetch_assoc($query))
{
// incrementa il contatore per questo URL
$data[$assoc['url']] += 1;
}
// visualizza la tabella
echo '<table cellpadding="5" border="1">';
echo '<tr>';
echo '<th>URL</th>';
echo '<th>Visite</th>';
echo '</tr>';
// visualizza le informazioni
foreach($data as $url => $visits)
{
echo '<tr>';
echo '<td><a href="click.php?url='. $url .'" target="_blank">'. $url .'</a></td>';
echo '<td>'. $visits .'</td>';
echo '</tr>';
}
// chiude la tabella
echo '</table>';
?>
E il terzo è semplicemente un file di configurazione, si deve chiamare config.php e devi personalizzare i dati del database:
Codice PHP:
<?php
// dati del database
$dbhost = 'localhost'; // host (localhost)
$dbuser = 'root'; // username (nomesito)
$dbpass = ''; // password (lascia vuoto)
$dbname = 'counter'; // nome database (my_nomesito)
$dbport = 3306; // porta (lascia 3306)
// connessione al database
$conn = @mysql_connect("{$dbhost}:{$dbport}", $dbuser, $dbpass) or die(mysql_error());
@mysql_select_db($dbname, $conn) or die(mysql_error());
?>
E questa è la tabella che devi creare sul tuo sito:
Codice:
-- phpMyAdmin SQL Dump
-- version 3.2.2.1deb1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generato il: 21 feb, 2010 at 09:56 PM
-- Versione MySQL: 5.1.37
-- Versione PHP: 5.2.10-2ubuntu6.4
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Database: `counter`
--
-- --------------------------------------------------------
--
-- Struttura della tabella `clicks`
--
CREATE TABLE IF NOT EXISTS `clicks` (
`ip` varchar(15) NOT NULL,
`url` tinytext NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Divertiti!