(Расширение на принятый ответ ...)
Мне нужно было:
- просмотр журнала изображения
jpg
и и анимированного gif
, и,
- гарантирует, что изображения никогда не кэшируются (поэтому каждый просмотр регистрируется), и,
- также сохранить исходные расширения файлов .
Я сделал это, создав «вторичный» .htaccess
файл в подпапке, в которой находятся изображения.
Файл содержит только одну строку:
AddHandler application/x-httpd-lsphp .jpg .jpeg .gif
В той же папке я поместил два «оригинальных» файла изображения (назовем их orig.jpg
и orig.gif
), а также два варианта [упрощенного] сценария ниже (сохранены как myimage.jpg
и myimage.gif
) ...
<?php
error_reporting(0); //hide errors (displaying one would break the image)
//get user IP and the pseudo-image's URL
if(isset($_SERVER['REMOTE_ADDR'])) {$ip =$_SERVER['REMOTE_ADDR'];}else{$ip= '(unknown)';}
if(isset($_SERVER['REQUEST_URI'])) {$url=$_SERVER['REQUEST_URI'];}else{$url='(unknown)';}
//log the visit
require_once('connect.php'); //file with db connection info
$conn = new mysqli($servername, $username, $password, $dbname);
if (!$conn->connect_error) { //if connected then save mySQL record
$conn->query("INSERT INTO imageclicks (image, ip) VALUES ('$url', '$ip');");
$conn->close(); //(datetime is auto-added to table with default of 'now')
}
//display the image
$imgfile='orig.jpg'; // or 'orig.gif'
header('Content-Type: image/jpeg'); // or 'image/gif'
header('Content-Length: '.filesize($imgfile));
header('Cache-Control: no-cache');
readfile($imgfile);
?>
Изображения визуализируются (или анимируются) обычным образом и могут вызываться любым обычным способом для изображений (например, тегом <img>
) и сохраняют запись посещающего IP-адреса, хотя и невидимы для пользователя.