Я хотел бы иметь код для изображения, который подсчитывает количество просмотров изображения независимо от того, на каком сайте находится изображение. Я хочу использовать тэг img src и указать src на php-страницу, которая учитывает это представление, а затем возвращает изображение для просмотра. Я думал примерно так:
<img src="www.mywebsiteurl.com/something.php" />
Как мне написать «something.php», чтобы он вернул правильный файл изображения? Я знаю, как записывать просмотр страницы, но если я должен сделать что-то другое в этом случае, скажите мне.
Ваш скрипт должен:
header('Content-Type: image/jpeg');
) readfile( $path_to_image )
); Для примера см. Документацию по чтению и вывод изображения на PHP .
Загрузка изображений / файлов из php медленнее, чем обычная загрузка файлов.
Основные минусы:
Если вы используете базу данных и хотите увеличивать столбец после загрузки изображения, то пользователь может загружать ваше изображение снова и снова. Поэтому вам нужно использовать условия для каждого запроса.
Альтернативное решение
Введите этот код в нижнем колонтитуле страницы, на которой вы хотите показывать изображения.
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)