Тэг ‘ручками’

Водяные знаки на PHP

Проблема: иногда недобросовестные (или добросовестные, но без злого умысла и задней мысли) представители интернет-индустрии используют эксклюзивные авторские изображения без указания авторства и без всякого на то разрешения. Конечно, нормативные документы, гласящие об авторском праве в настоящее время упоминаются чуть ли не на каждом шагу; множество решений в суде, вынесенных в пользу автора…

Одним из способов указания авторства изображений, который довольно широко используется в Интернет - так называемые Watermark или Водяные знаки - изображения, содержащие информацию об авторе или сайте, для дальнейшего наложения на оригинальные авторские изображения.

В сети можно найти массу реализаций. Наиболее простым мне показался следующий вариант - наложение 8-битного (при желании - прозрачного) png-изображения (идентификатор в переменной $watermark_img_obj) с определенной прозрачностью ($alpha_level от 0 до 100) на основное изображение ($main_img_obj)

function watermark( $main_img_obj, $watermark_img_obj, $alpha_level = 100) {
$watermark_width = imagesx($watermark_img_obj);
$watermark_height = imagesy($watermark_img_obj);
$dest_x = imagesx($main_img_obj) - $watermark_width - 10; // правый
$dest_y = imagesy($main_img_obj) - $watermark_height - 10; // нижний угол изображения
imagecopymerge($main_img_obj, $watermark_img_obj, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $alpha_level);
return $main_img_obj;
}

Конечно, это не “супер-мегакласс” с кучей параметров, но защитить изображения водяным знаком функция позволяет сделать без особых сложностей. Можно написать свою, как, например тут. Можно воспользоваться готовыми классами - watermark от PixelJeck-а, imagemanipulator, который предоставляет гораздо более широкие возможности для работы с изображениями, или же написать свой.

Еще, думаю, есть смысл обратить внимание на ImageMagic, а точнее на его интерфейс в php - IMagick.

Как лучше расположить надпись/водяной знак на изображении, чтобы с одной стороны сохранить информацию об авторе изображения, а с другой - не испортить изображение… Нельзя забывать, что желательно, чтобы посетитель мог сконцентрироваться не на водяном знаке, а на самом изображении.

Для Wordpress существует отдельный плагин wp-watermark, который кстати можно использовать для массового наложения водяных знаков на все файлы из каталога.

Любой класс или функцию можно взять за основу для своих наработок, которые в дальнейшем можно использовать как готовые “кирпичики” в своих проектах. Перерабатывая классы и функции “под себя” не только лучше вникаешь в алгоритм самой функции, но и можешь сделать то, что считаешь нужным. :)

Удачи!

Опубликовано Май 5, 2009 | автор: levik  |  Нет комментариев »

СURL в PHP (libcurl)

CURL (Client URL Library), libcurl - библиотека функций для работы с серверами по различным протоколам (http, ftp, https … и ряд других - более подробно смотрите описание последней версии).

В php включена  (если точнее, имеется возможность включить - зависит от конфигурации сервера) поддержка curl. Проверить, поддерживается ли сервером функции curl проще всего, произведя вызов любой из функций, например
<?php
$ch = curl_init("http://www.example.com/");
?>

Если исполнение этого кода не приведет к ошибке - все в порядке, можем использовать CURL в “корыстных целях”. Если же “функция не существует”… Но, впрочем, это уже совсем другая история. А пока вернемся к нашим.. CURL ам.

В PHP самый простой вариант использования библиотеки обычно  сводится к следующим шагам:

Инициализация - curl_init($url);
Установка параметров - curl_setopt($ch, $opt, $value);
Выполнение запроса - curl_exec($ch);
// Получение и обработка информации - обычно хватает результата, возвращенного предыдущей функцией, однако, существует несколько дополнительных функций, например curl_getinfo($ch);
Закрытие - curl_close($ch);

Особенности и подводные камни:
CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR при работе в  WINDOWS будут правильно работать только при указании полного пути к файлу.

Опубликовано Апрель 7, 2009 | автор: levik  |  Нет комментариев »

OsCommerce - замеченные глюки-баги

Решил собрать некоторые глюки Oscommerce (версии и сборки различные) , потому как порой, как оказалось, они встречаются чаще одного раза.. А когда помнишь, что ты уже это делал.. и не помнишь, как.. а поиск выдает что-то не то..

Возможно, окажется полезным не только мне..

OsCommerce не отображает некоторые товары

Поскольку в этом SHOP-монстре куча всевозможных настроек, следует убедиться, что “скрытый” от глаз посетителя товар не отключен этими настройками. Естественно, если один товар отображается, а другой - нет, следует… сравнить атрибуты/параметры этих товаров в админ панели Oscommerce или непосредственно в базе. В моем случае, для не отображаемых товаров просто не был указан производитель.

OsCommerce не добавляет некоторые товары в корзину

Столкнулся с “чудесами” - все товары (все проверенные - порядка 30) в корзину добавляются нормально, один - ну никак не хочет. При попытке добавить в корзину происходит переход на пустую корзину.
Проблема оказалась в добавлении к атрибуту action в теге form дополнительного параметра &sid=id_sesion..

Oscommerce не дает войти в админ центр

Проблема оказалась в принудительной установке Cookies - поправил изменением значения в таблице configuration (непосредственно в базе). Искать в базе в таблице `configuration`
where configuration_key like '%cookie%'
менять с true на false и наоборот.

Oscommerce выдает ошибку при обновлении версии MySQL

При обновлении базы MySQL, используемой OsCommerce с версии 4 на версию 5, магазин “радует” нас англоязычными сообщениями об ошибках. Поиск по аглицким форумам помог решить проблему - в свое время  пару часов пришлось повозиться. Однако, сейчас уже и не вспомню… Если повторится - дополню…

На самом деле, несмотря на кажущуюся “громоздкость”, oscommerce , если разобраться, не такой уж сложный магазин. Наличие форумов, как русскоязычных, так и забугорных, дает возможность вникнуть и решить практически любую проблему.. (не путать с “проблему решат за тебя”.. хотя, обычно, вопрос цены…)

UPD
Oscommerce не добавляет товары в корзину

При попытке добавить товар в корзину (а также при регистрации) перебрасывает на страницу “включите Cookies” (cookie_usage.php) с сообщением:

Для работы с нашим магазином Вам необходимо включить поддержку cookies в Вашем браузере.

Из возможных вариантов:
1. неправильно указаны настройки в файле /includes/configure.php и admin/includes/configure.php (ситуация часто возникает при переездах oscommerce-магазина с одного хостинга на другой:
define('HTTP_SERVER', 'http://server.name'); // eg, http://localhost - should not be empty for productive servers
define('HTTPS_SERVER', 'https://server.name'); // eg, https://localhost - should not be empty for productive servers
define('ENABLE_SSL', false); // secure webserver for checkout procedure?
define('HTTP_COOKIE_DOMAIN', 'server.name');
define('HTTPS_COOKIE_DOMAIN', '');
define('HTTP_COOKIE_PATH', '/');

2. некоторые магазины на базе OSCommerce требуют включения директив php:
php_value register_globals on
php_value register_long_arrays on

3. если ситуация с cookies на локальном компьютере, то, возможно это из-за некорректного распознавания домена localhost некоторыми браузерами (они считают домен некорректным, если в нем нет точки). Или настраивать локальный web-сервер, или залезть в includes/application_top.php и подправить установку домена cookies: $cookie_domain = ” (при выкладке на сервер не забыть вернуть как было :)

Опубликовано Август 19, 2008 | автор: levik  |  Комментарии (2) »