Ok filippo.toso, grazie ai tuoi suggerimenti ho migliorato lo script in questo modo:
Codice PHP:
<?php
session_start();
$db_host = ...;
$db_user = ...;
$db_password = ...;
$db_name = ...;
$dbms = mysql_connect($db_host, $db_user, $db_password) or die ("Impossibile connettersi al server MySql!\n");
$db = mysql_select_db($db_name, $dbms) or die ("Impossibile aprire il database db_name!\n");
if (!session_is_registered("visitor")) {
$visitor = session_id();
session_register("visitor");
mysql_open($dbms, $db);
# ricava tutte le informazioni della visita
$host_remoto = mysql_real_escape_string(gethostbyaddr($_SERVER['REMOTE_HOST']));
$ip_remoto = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
$http_referer = mysql_real_escape_string($_SERVER['HTTP_REFERER']);
$ip_number = sprintf("%u", ip2long($ip_remoto));
$query = "SELECT COUNTRY_NAME FROM `iptocountry` WHERE IP_FROM <= $ip_number and IP_TO >= $ip_number";
$result = mysql_query($query) or die (mysql_error());
$row = mysql_fetch_row($result);
$country = $row[0];
$language = mysql_real_escape_string($_SERVER['HTTP_ACCEPT_LANGUAGE']);
$browser = mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']);
$os = mysql_real_escape_string($_SERVER['OS']);
$moment = date("Y-m-d H:i:s");
$visit = "INSERT INTO visits (remote_host, remote_ip, http_referer, country, language, browser, os, moment)
VALUES ('$host_remoto', '$ip_remoto', '$http_referer', '$country', '$language', '$browser', '$os', '$moment')";
mysql_query($visit) or die (mysql_error());
# visualizza visite uniche
$query = "SELECT COUNT(*) FROM visits";
$result = mysql_query($query) or die (mysql_error());
$row = mysql_fetch_row($result);
echo $row[0]." visite";
mysql_close($dbms);
}
?>
il problema sorge quando richiamo la stessa pagina impostando i parametri via GET: mi aggiunge una nuova visita!