Ayant eut quelques visiteurs indélicats sur ma gallerie, j'ai décidé de mettre en oeuvre une sorte de logs; j'ai aussi écrit un outils qui permet d'avoir une vue sur les x derniers accès, avec géolocalisation; je ferais sans doute un article plus complet sur cet outils plus tard.
AEVA est sans doute l'une des gallerie les plus performantes que j'ai eut a installer; mais elle ne reseigne que le nombre de 'vues' sur une image/video, en aucun cas, la localisation du visiteur; de mon point de vue, plus on en sait; mieux c'est; j'ai donc modifié aeva gallerie pour que celui-ci loggue chaque demande dans une table...
voici le "how-to" (pour une version 1.4c)
commençons par la table qui va contenir le log:
CREATE TABLE IF NOT EXISTS `media_log_visit`(
`stamp` int(11) NOT NULL,
`IP` varchar(16) character set latin1 collate latin1_german1_ci NOT NULL,
`id` int(11) NOT NULL,
`referer` varchar(1024) collate latin1_general_ci default NULL,
`useragent` varchar(1024) collate latin1_general_ci default NULL,
KEY `stamp` (`stamp`),
KEY `IP` (`IP`),
KEY `id` (`id`),
KEY `referer` (`referer`(1000)),
KEY `useragent` (`useragent`(1000))
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
Ensuite nous modifions les fichiers:
MGalleryItem.php
ligne 36:
$id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : (int) $_REQUEST['in'];
$type = isset($_REQUEST['thumb']) ? 'thumb' : (isset($_REQUEST['preview']) ? 'preview' : 'main');
Insérez juste avant if (!aeva_allowedTo('access'))"
// Fixed by Frater
$amFunc['db_query']('
UPDATE {db_prefix}aeva_media
SET views = views + 1
WHERE id_media = {int:media}',
array('media' => $id),__FILE__,__LINE__);
/* IP Logs by Frater */
$ip = "UNKNOWN";
if ($_SERVER["HTTP_CLIENT_IP"]) $ip = $_SERVER["HTTP_CLIENT_IP"];
if ($_SERVER["HTTP_X_FORWARDED_FOR"]) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
if ($_SERVER["REMOTE_ADDR"]) $ip = $_SERVER["REMOTE_ADDR"];
$referer = $_SERVER['HTTP_REFERER'];
$useragent = $_SERVER['HTTP_USER_AGENT'];
$log_date = time();
$query_sql = "INSERT INTO {db_prefix}log_visit
(stamp,IP,id,referer,useragent)
VALUES ($log_date,'$ip',$id,'$referer','$useragent')";
$amFunc['db_query']($query_sql,
array('id' => $id),__FILE__,__LINE__);
// Nothing more to come
en ligne 93; supprimé le block:
$amFunc['db_query']('
UPDATE {db_prefix}aeva_media
SET views = views + 1
WHERE id_media = {int:media}',
array('media' => $id),__FILE__,__LINE__);
// Nothing more to come
Aeva-Gallery.php
autour de la ligne 2190; rechercher:
die('Hacking attempt...');
$type = current(array_intersect(array('thumb', 'thumba', 'preview', 'icon', 'bigicon', 'main'), array_keys($_REQUEST)));
$type = $type === false ? 'main' : $type;
// Get the file's data
$id = (int) $_REQUEST['in'];
/* IP Logs by Frater */
$ip = "UNKNOWN";
if ($_SERVER["HTTP_CLIENT_IP"]) $ip = $_SERVER["HTTP_CLIENT_IP"];
if ($_SERVER["HTTP_X_FORWARDED_FOR"]) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
if ($_SERVER["REMOTE_ADDR"]) $ip = $_SERVER["REMOTE_ADDR"];
$referer = $_SERVER['HTTP_REFERER'];
$useragent = $_SERVER['HTTP_USER_AGENT'];
$log_date = time();
$query_sql = "INSERT INTO {db_prefix}log_visit
(stamp,IP,id,referer,useragent)
VALUES ($log_date,'$ip',$id,'$referer','$useragent')";
$amFunc['db_query']($query_sql,
array('id' => $id),__FILE__,__LINE__);
/* IP Logs by Frater */
// Nothing more to come
Voilà c'est fait