Visualizzazione risultati 1 fino 2 di 2

Discussione: Inserire immagine dinamica con <img> e sapere dove viene visualizzata

  1. #1
    Guest

    Predefinito Inserire immagine dinamica con <img> e sapere dove viene visualizzata

    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

  2. #2
    Guest

    Predefinito

    Se ho capito bene vuoi che la pagina immagine_stats.php, richiamata come immagine, capisca in che script venga inclusa, giusto? Allora passagli via get il nome dello script in esecuzione, tipo:
    Codice PHP:
    <img src="immagine_stats.php?page=<?php print $_SERVER['SCRIPT_NAME']; ?>" />

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •