Количество просмотров изображений

Я хотел бы иметь код для изображения, который подсчитывает количество просмотров изображения независимо от того, на каком сайте находится изображение. Я хочу использовать тэг img src и указать src на php-страницу, которая учитывает это представление, а затем возвращает изображение для просмотра. Я думал примерно так:

<img src="www.mywebsiteurl.com/something.php" /> 

Как мне написать «something.php», чтобы он вернул правильный файл изображения? Я знаю, как записывать просмотр страницы, но если я должен сделать что-то другое в этом случае, скажите мне.

    Ваш скрипт должен:

    1. Запишите хит.
    2. Задайте тип содержимого вывода ( header('Content-Type: image/jpeg'); )
    3. Вывести изображение ( readfile( $path_to_image ) );

    Для примера см. Документацию по чтению и вывод изображения на PHP .

    Загрузка изображений / файлов из php медленнее, чем обычная загрузка файлов.

    Основные минусы:

    • Изображения нельзя кэшировать из-за динамического запроса, который большинство браузеров не поддерживает в динамических запросах.
    • Накладные расходы на sever и apache.

    Если вы используете базу данных и хотите увеличивать столбец после загрузки изображения, то пользователь может загружать ваше изображение снова и снова. Поэтому вам нужно использовать условия для каждого запроса.

    Альтернативное решение

    Введите этот код в нижнем колонтитуле страницы, на которой вы хотите показывать изображения.

    Ajax-вызов

     $.get("inc_img_view.php?img_id="+<?php echo $img_id; ?>); 

    Это самая баребонная версия, которую вы можете иметь:

     <?php header('Content-type: image/jpeg'); readfile('somepic.jpg'); 

    Вы можете вызвать изображение, используя URL-адрес, похожий на: www.mywebsiteurl.com/image_renderer.php?url=url_to_image .

    image_rendered.php:

     <?php header("Content-Type: image/jpeg"); $url = urldecode($_GET['url']); $headers = array( "GET ".$url." HTTP/1.1", "Content-Type: text/xml; charset=UTF-8", "Accept: text/xml", "Cache-Control: no-cache", "Pragma: no-cache" ); $ch = curl_init($url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, false); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); $r = curl_exec($ch); // you can connect to your database and increment the number of times this image was viewed echo $r; ?> 

    Надеюсь, это укажет вам в правильном направлении.

    Да, вы хорошо начали. Я бы сделал что-то вроде этого

     <img src="www.mywebsiteurl.com/image_counter.php?src=image.jpg" /> 

    В image_counter.php возьмите $src = $_GET['src'] для источника изображения.

    Затем +1 для этого изображения в базе данных.

    Тогда сделайте

     header('Content-type: image/jpeg'); readfile($src); 

    Что-то вроде этого должно работать:

     <?php $file = $_GET['img']; $path = "images/"; // do an increment of views on the image here - probably in a database? $exifImageType = exif_imagetype($path.$file); if ($exifImageType !== false) { $type = image_type_to_mime_type($exifImageType); } header('Content-Type: $type'); echo file_get_contents($path.$file); 

    Примечание: это может сделать что-то вроде:

     <img src="getimage.php?img=image.jpg" /> 

    покажите правильное изображение после увеличения просмотров.

    Вы всегда можете добавить некоторый .htaccess, чтобы сделать все вызовы / images / anything через ваш файл изображения. Это означало бы, что вы могли бы сохранить URL-адрес так, как будто он получает фактический файл изображения (например, /images/logo.jpg будет переписано на самом деле через getimage.php? Img = logo.jpg)