Пожалста.
Я не проверял, но 99.9% работает на PNG и GIF.
Так же можно комбинировать - PNG исходник и JPEG watermark.
Папка, куда сохраняется итоговый файл, должна иметь права на запись.
О, а я даже и не заметил :)
Поправил код.
function watermark($source, $watermark, $dest) { $source_size = getimagesize($source); $watermark_size = getimagesize($watermark); switch ($source_size[2]) { case 1: $sImg = @imagecreatefromgif ($source); break; case 2: $sImg = @imagecreatefromjpeg ($source); break; case 2: $sImg = @imagecreatefrompng ($source); break; } switch ($watermark_size[2]) { case 1: $wImg = @imagecreatefromgif ($watermark); break; case 2: $wImg = @imagecreatefromjpeg ($watermark); break; case 2: $wImg = @imagecreatefrompng ($watermark); break; } $im = imagecreatetruecolor($source_size[0], $source_size[1] + $watermark_size[1]); imagecolorallocate ($im, 0, 0, 0); imagecopy($im, $sImg, 0, 0, 0, 0, $source_size[0], $source_size[1]); imagecopy($im, $wImg, 0, $source_size[1]+1, 0, 0, $watermark_size[0], $watermark_size[1]); switch ($source_size[2]) { case 1: $sImg = @imagegif($im, $dest.'.gif'); break; case 2: $sImg = @imagejpeg($im, $dest.'.jpg'); break; case 3: $sImg = @imagepng($im, $dest.'.png'); break; } }
$source - Имя входящего файла ( демотиватор )
$watermark - Имя файла с вотермарком
$dest - Имя файла результирующего файла. Полный путь к файлу без расширения.
Обрабатываются GIF, PNG и JPEG.
Формат файла на выходе такой же, как и формат входящего файла.
Пример вызова функции:
watermark('source.jpg', 'watermark.jpg', 'images/result');
После работы будет создан файл images/result.jpg
Пример почти под вашу задачу описан тут: http://www.php.net/manual/en/image.examples-watermark.php
Описание функций для работы и изображениями тут http://php.su/functions/?cat=image
Ну я же дал PHP код.
echo 'Congratulations'; выполняется только если посетитель пришел по адресу, который есть в массиве.
Если хотите, чтоб было наоборот - сделайте так
if (!in_array($url, $sites)) { echo 'Доступ запрещен'; }
В настройках сервера не силен, PHP код подскажу
// Разрешенные сайты $sites = array('site.com', 'site.ru', 'site.com.ru'); // Получим url и разобъем его на части $url = explode('.', $_SERVER['HTTP_HOST']); // Если начинается с www - удалим эту часть if ($url[0] == 'www') unset($url[0]); // Соберем url обратно. Теперь он точно без www $url = implode('.', $url); // Если полученный после преобразований адрес есть в массиве if (in_array($url, $sites)) { echo 'Congratulations'; }
Скорее всего удалить www можно с помощью регулярки, но в ней я тоже школьнег :)
В $_SERVER['HTTP_HOST'] они попадают, проверено.
А вот каким образом отличить домен от саб домена - задача.
Может же быть site.com.ru, а может быть site.host.ru
Site на первом месте, но первый это домен, второй - саб домен.
Да. Но если прийдет subdomain.site.com.ru то в переменной будет 'subdomain'
Вот еще PHP вариант, более удобный
$url = explode('.', $_SERVER['HTTP_HOST']); $site = ($url[0] == 'www') ? $url[1] : $url[0];
В переменную $site пишется имя вашего сайта. Та его часть, которая идет сразу после www или которая первая, если www в адресе нет.
То есть если посетитель зашел по адресу www.site.ru или site.ru в переменной $site будет значение 'site'
А дальше делайте с ним что угодно
Если хотите средствами PHP, то нужно писать так:
if (stripos($_SERVER['HTTP_HOST'], 'site') === false) { die(); }
Обязательно три знака равенства.
Но такой вариант пропустит доступ с адреса mysite.com, например. siteforall.ru тоже пройдет