PHP защита изображения от копирования. Защищаем авторские картинки от плагиата — PROG-TIME

PHP защита изображения от копирования. Защищаем авторские картинки от плагиата

11.02.2023
Содержание:

В данной записи я вам покажу как защитить ваши изображения от плагиата. Мы с вами пропишем скрипт, который позволяет запретить скачивание ваших изображений с сайта. Мой способ поможет защититься как от парсинга, так и от прямого захода пользователя на изображение.

Для начала давайте пропишем необходимую вёрстку. В качестве изображения я буду использовать прозрачную заглушку, которая будет растягиваться во весь контейнер. Для этого пропишем тег img с атрибутом scr во внутрь которого пропишем код изображения в формате base64.

Само изображение будет выводиться через background, но и тут не так всё просто…

Обычно разработчики просто прописывают путь до изображение в свойство background. При таком способе любой контент-менеджер может скопировать путь в инспекторе и вставить его в адресную строку.

Такой способ я прозвал дурак ловит дурака!)))

Вот что предлагаю я… прописать путь до PHP скрипта, там с помощью PHP получать изображение из БД и выводить его на страницу, передав специальные заголовки.

HTML

Вёрстка у нас выглядит следующим образом:

<div class="wrapperPage">
    <div class="imageBlock" style="width: 1000px;height: 700px;background:url(../api/images_security/index.php?showimg=6203995) no-repeat;background-size: cover;
    background-position: center center;">
        <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="" style="width: 100%; height: 100%;">
    </div>
</div>

PHP

В PHP вам нужно самостоятельно определиться как вы будете получать изображение. Я для получения изображения передаю в скрипт GET параметр showimg, в котором указываться ID изображения. По этому ID я и получаю необходимое изображение.

if(!empty($_GET['showimg'])) {
    /* проверяем переход пользователя или служебное выполнение */
    $block = $_SERVER['HTTP_REFERER'];
    if (strlen($block) > 1) {
        /* здесь получаем картинку из БД */
        /* -------- */
        /* ------------------------------ */
        $imagePath = "сюда_записываю_путь_до_картинки;

        /* получаем тип файла */
        $typeFile = pathinfo($imagePath, PATHINFO_EXTENSION);

        if($typeFile == "png") {
            $img = imagecreatefrompng($imagePath);
            header('Content-Type: image/png');
        } elseif($typeFile == "jpeg" || $typeFile == "jpg") {
            $img = imagecreatefromjpeg($imagePath);
            header('Content-Type: image/jpeg');
        }
        
        // Выводим изображение
        imagejpeg($img);
        imagedestroy($img);
    } else {
        $img = imagecreatefrompng("https://adeta.ru/local/templates/adeta/images/icons/logo.png");

        header('Content-Type: image/png');

        // Выводим изображение
        imagejpeg($img);
        imagedestroy($img);
    }
}