Salve a tutti ragazzi, allora, ho un problema che non riesco a risolvere con il php e le sue variabili Globali.
Allora, ho uno script, che registra delle statistiche con tutti i dati del visitatore, attraverso un'immagine richiamata in php.
Registro la pagina visualizzata e il referer. Soltanto che quando vado a fare la query, come referer mi inserisce la pagina che sto visualizzando e nella pagina visualizzata mi inserisce sempre quella dell'immagine.
Lo script dell'immagine che esegue la query è questo:
Codice PHP:
<?php
define('IN_ICYPHOENIX', true);
if (!defined('IP_ROOT_PATH')) define('IP_ROOT_PATH', '../');
if (!defined('PHP_EXT')) define('PHP_EXT', substr(strrchr(__FILE__, '.'), 1));
include(IP_ROOT_PATH . 'includes/functions_mg_http.' . PHP_EXT);
include(IP_ROOT_PATH . 'icy_stats/common.' . PHP_EXT);
$userdata = session_pagestart($user_ip);
init_userprefs($userdata);
$sql = 'UPDATE ' . ICY_STATS_COUNTER_TABLE . ' SET hits=(hits + 1)';
if (!($db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not update icy stats table.', '', __LINE__, __FILE__, $sql);
}
$ip_address = $_SERVER['REMOTE_ADDR'];
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$real_ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
if(ereg('^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$', $real_ip))
{
$ip_address = $real_ip;
}
}
$get_language = get_user_lang();
$language = $get_language['lang'];
$referer = get_user_referer();
#$page = extract_current_page(IP_ROOT_PATH);
#$page_view_complete = $page['page_dir'] . '/' . $page['page_full'];
$page_view = get_view_page($board_config['server_name'] . $_SERVER['REQUEST_URI']);
$page_view_complete = $page_view['url'];
$user_visit_id = ($userdata['session_logged_in']) ? $userdata['user_id'] : '-1';
$sql = "INSERT INTO " . ICY_STATS_VISITS_TABLE . " (user_visit_id, ip_address, http_user_agents, lang, date, referer, page_view)
VALUES('" . $user_visit_id . "', '" . $ip_address . "', '" . get_http_user_agent() . "', '" . $language . "', '" . time() . "', '" . $referer . "', '" . $page_view_complete . "')";
if (!($db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not update icy stats visitors table.', '', __LINE__, __FILE__, $sql);
}
$height = 1;
$width = 1;
$image = imagecreate($width, $height);
$background_color = imagecolorallocate($image, 0, 0, 0);
$transparent_color = imagecolortransparent($image, $background_color);
header("Content-type: image/gif");
imagegif($image);
imagedestroy($image);
?>
La funzione get_view_page() non fa altro che confrontare l'indirizzo con delle variabili di lingua, semplicemente per scrivere il titolo della pagina, non è indispensabile al funzionamento dello script.
Come posso risolvere questo problema?
In pratica, supponendo questa pagina si chiami immagine_stats.php, richiamandola con il tag image, dato che invio l'header apposito, come posso registrare in page_view la pagina dove viene visualizzata quest'immagine e referer la pagina da cui si arriva?
Ho fatto un prova in locale, ho scritto un post, inserito l'immagine, ho copiato il link qui nel post di altervista, sono entrato ma registra come referer la pagina dove viene visualizzata l'immagine e come pagina vista quella dove è contenuto lo script dell'immagine.
Grazie in anticipo