Защищаем изображения на сайте
Опубликовано: Май 15, 2010 |
Если ваш сайт содержит определенное количество уникальных изображений или картинок, и вы никак не хотите чтобы кто-то другой неправомерно ими завладел, вы можете сделать на них подпись или поставить какой-то логотип, но это является отнюдь не самым эффективным вариантом, так как подпись можно замазать или вырезать. Поэтому предлагаю попробовать еще один способ.
Чтобы защитить изображения на всем сайте нужно использовать mod_rewrite + PHP.
Mod_rewrite выполняет перенаправление всех запросов идущих к папке image, а php-скрипт в зависимости от типа файла будет либо накладывать копирайт (при условии, что это изображение), либо нет (если это файл).
Неудобство данного способа защиты проявляется в том, что вам придется хранить все защищаемые изображения в отдельной папке. Это нужно делать, чтобы mod_rewrite определил, как поступить с изображением, нужно ли его защищать или нет.
И если вам в голову придет идея заменить все изображения новыми, ваш графический дизайн полетит.
Сайт с уникальным контентом и оригинальными изображениями высоко ценится среди пользователей, поэтому на нем можно неплохо подзаработать, например, сотрудничая с партнерской программой Smartbucks.ru.
Итак, сначала вам следует дописать несколько строчек в .htaccess:
RewriteEngine on
RewriteBase /
Options +FollowSymlinks
RewriteRule ^image/(.*) image.protect.php?img_name=$1
После этого запросы, которые идущие к папке image, будут автоматически перенаправляться на php-скрипт, в переменной $img_name с указанием оставшейся части пути к файлу.
В данном PHP-скрипте реализованы функции защиты для основных типов изображений используемых в интернете:
<?php
/* http://wm-help.net/ */
/* Функция для наложения на изображение своего копирайта в виде текста */
/* для использования других шрифтов используйте imageloadfont() */
function img_nalogenie(&$im, $img_info)
{
if ($img_info[0]>50 and $img_info[1]>20) /* проверка, влезит ли надпись */
{
$green = imagecolorallocate ($im, 0, 255, 0); // установка зеленого цвета
imagestring($im, /* наше изображение */
2, /* id шрифта (0-5 - системные), остальные грузятся через imageloadfont() */
5, /* смещение по X */
5, /* смещение по Y */
“(c) wm-help.net“, /* защитная надпись на изображении */
$green); /* цвет выводимого текста */
}
}
if (isset($img_name))
{
$img_name = “image/” . $img_name; /* дополнение пути */
$info = @getimagesize($img_name); /* получение информации о изображении */
$ext = @$info[2]; /* тип изображения */
$header = @$info['mime']; /* правильный заголовок для использования в header() */
switch($ext) /* выбор способа открытия по типу изображения */
{
case 1: // GIF
{
$im = @imagecreatefromgif($img_name); /* попытка открыть */
if ($im) /* Открылось или нет */
{
header(”Content-type: ” . $header); /* отправляем заголовок */
img_nalogenie($im, $info); /* накладываем свой текст на изображение */
imagegif($im); /* выводим изображение в браузер */
}
break;
}
case 2: // JPG
{
$im = @imagecreatefromjpeg($img_name);
if ($im)
{
header(”Content-type: ” . $header);
img_nalogenie($im, $info);
imagejpeg($im);
}
break;
}
case 3: // PNG
{
$im = @imagecreatefrompng($img_name);
if ($im)
{
header(”Content-type: ” . $header);
img_nalogenie($im, $info);
imagepng($im);
}
break;
}
case 6: // BMP
{
$im = @imagecreatefromwbmp($img_name);
if ($im)
{
header(”Content-type: ” . $header);
img_nalogenie($im, $info);
imagewbmp($im);
}
break;
}
default: /* если ничего не подошло */
{
$f = @file($img_name); /* пробуем считать файл */
if ($f) /* если файл считался */
{
echo implode(””, $f); /* выводим массив строкой */
}
break;
}
}
}
?>
Если данная защита не работает на вашем сайте, проверьте установлен ли mod_rewrite на вашем хостинге и правильно ли вы указали директорию с изображениями.
Похожие записи:
Комментарии
3 Comments “Защищаем изображения на сайте”
Комментировать статью:


Июнь 5th, 2010 @ 9:48
А я про СмартБакс слышал тоже. Буду с ними работать как траф появится норм
Июнь 12th, 2010 @ 9:32
Партнерка топовая. Отличная.
Июль 9th, 2010 @ 16:42
Партнерка твоя реально работает. Спасибо за совет!