Делается это для того, что бы хоть как то защитить сайт от недобросовестных веб-мастеров, забывающих указывать первоисточник материала. Очень актуален такой вид защиты для сайтов с уникальными галереями всевозможных картинок и изображений. Конечно, скажете вы, можно просто обрезать или замазать то место, где стоит подпись или логотип, но это все равно лучше, чем вообще не пытаться защитить свои изображения от посягательств со стороны конкурентов.
Для реализации защиты изображений на всем сайте нужно будет использовать mod_rewrite + PHP. Идея данной защиты очень проста: mod_rewrite перенаправляет все запросы идущие к папке image, а php-скрипт, в зависимости от типа запрашиваемого файла, решает, что с ним делать – накладывать копирайт, если это изображение или не стоит, если это файл. Единственным минусом данного подхода является то, что все защищаемые изображения нужно хранить в отдельной папке, что бы mod_rewrite мог определить, нужно или нет защищать данное изображение. Если же вы вдруг захотите "пометить" все изображения на сайте, то приготовьтесь к тому, что от вашего графического дизайна, ничего на останется – все будет усеяно вашими копирайтами.
И так, реализация данной защиты изображений на сайте проста, так же как и сама идея. Для начала дописываем в .htaccess пару строчек:
RewriteEngine on
RewriteBase /
Options +FollowSymlinks
RewriteRule ^image/(.*) image.protect.php?img_name=$1
После добавления этих строчек в .htaccess все запросы идущие к папке image будут автоматически перенаправляться на php-скрипт, в переменной $img_name с указанием оставшейся части пути к файлу.
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 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; правильно ли указанна директория с изображениями, в данном примере это – images; все ли вы правильно сделали.
автор: Беляев Александр
источник: wm-help
Опубликовал Kest
October 27 2008 09:40:28 ·
0 Комментариев ·
62133 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.