Pagina 1 di 1

Stampare ip del visitatore nel database

Inviato: 23/08/2016, 23:35
da frank
Ho creato una pagina personalizzata che mette a video il numero di visite degli ospiti e degli users registrati, funziona tutto perfettamente. Ora vorrei mettere nel db l'ip dell'ultimo ospite (solo nel db, non mi interessa estrarlo), solo che non funziona.

Come variabile ho provato con questo: $ip_ultimo_visitatore = $_SERVER["REMOTE_ADDR"];
Ho già creato anche la tabella ip_ultimo_visitatore.

Questo è il codice funzionante, senza i richiami dell'ip in INSERT INTO e VALUES perché non funzionava con essi.

Codice: Seleziona tutto

<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
 
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup(); 
 
page_header('L’uomo vuole aiutare'); // Questo è ciò che apparirà come frase principale nel motore di ricerca
 
$template->set_filenames(array(
	'body' => 'a-aiuto-body.html',  // Questo file si trova nella cartella template
));
 
make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));

// Identificativo della pagina 
$pagina = "'a-aiuto'";

// Connessione al db tramite i parametri nel file config.php
$link = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname);
if (!$link) {
   die ("Non riesco a connettermi:" . mysqli_error());
}

if ($user->data['user_id'] == 314) { // il 314 è l'ID admin (il mio), non viene conteggiato
        $query="INSERT INTO phpbb_contatore(pagina, visite_tot, visite_users, visite_ospiti) VALUES($pagina, 0, 0, 0)
                     ON DUPLICATE KEY UPDATE visite_tot = visite_tot + 0, visite_users = visite_users + 0, visite_ospiti = visite_ospiti + 0";
    } 
       else if ($user->data['user_id'] == 1) { // Conteggia gli Ospiti...
        $query="INSERT INTO phpbb_contatore(pagina, visite_tot, visite_ospiti) VALUES($pagina, 1, 1)
                     ON DUPLICATE KEY UPDATE visite_tot = visite_tot + 1, visite_ospiti = visite_ospiti + 1";
    } else { // ... e gli Utenti Registrati
        $query="INSERT INTO phpbb_contatore(pagina, visite_tot, visite_users) VALUES($pagina, 1, 1)
                     ON DUPLICATE KEY UPDATE visite_tot = visite_tot + 1, visite_users = visite_users + 1";
    }
    $ins_up=mysqli_query($link, $query);

// Include il file php che contiene tutti i contatori per il file articoliX.html. VA MESSO QUI
include($phpbb_root_path . '*a-contatori.' . $phpEx);

page_footer();
?>

Re: Stampare ip del visitatore nel database

Inviato: 24/08/2016, 13:36
da frank
Il problema è questo: $ip_ultimo_visitatore = $_SERVER["REMOTE_ADDR"];

mi da questo errore:

Errore Generale
Illegal use of $_SERVER. You must use the request class or request_var() to access input data. Found in /Applications/MAMP/htdocs/MIEI_SITI/Benessereforum/a-aiuto.php on line 29. This error message was generated by deactivated_super_global.

Re: Stampare ip del visitatore nel database

Inviato: 24/08/2016, 15:14
da Barrnet
PhpBB filtra, per questioni di sicurezza, l'uso dell'array globale $_SERVER. Puoi utilizzare la funzione nativa request_var oppure mettere al tuo script il seguente codice:

Codice: Seleziona tutto

$request->enable_super_globals();
Subito dopo questa porzione di codice:

Codice: Seleziona tutto

include($phpbb_root_path . 'common.' . $phpEx);
Ovviamente la prima soluzione è quella più sicura.

Re: Stampare ip del visitatore nel database

Inviato: 24/08/2016, 15:23
da frank
Non ho capito, che devo mettere?

Re: Stampare ip del visitatore nel database

Inviato: 24/08/2016, 16:30
da frank
Mi spiego, questo è il campo nella tabella, che codice php metto?

$query="INSERT INTO phpbb_contatore(pagina, visite_tot, visite_ospiti, ip_ultimo_visitatore)
VALUES($pagina, 1, 1, '$ip_ultimo_visitatore')