
Защита изображений на всем сайте. PHP+mod_rewrite Для реализации защиты изображений на всем сайте нужно будет использовать 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-скрипт тоже не слишком сложен для понимания, в нем реализованы функции защиты для основных типов изображений, который в основном используются в интернете: <?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; правильно ли указанна директория с изображениями, в данном примере это – images; все ли вы правильно сделали. Скачать данный пример защиты изображений от плагиата можно здесь: http://wm-help.net/download/image.protect.zip автор: Беляев Александр Реклама |