За месяц Май, 2009

Ошибка PHP Strict Standards: date(), time() или date.timezone

[error] [client IP] PHP Strict Standards:  date() [<a href=’function.date’>function.date</a>]: It is not safe to rely on the system’s timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Europe/Moscow’ for ‘MSK/3.0/n
o DST’ instead in …

Иногда такими строками изобилуют логи ошибок web-сервера (apache тот же). В чем дело? Раньше ведь ошибок не было! Или были?… не помню…

Все дело в том, что в очередной версии php добавили timezone “по умолчанию”, которая используется в функциях даты-времени (date/time functions)

date.timezone “” PHP_INI_ALL Available since PHP 5.1.0.

Решается небольшой поправкой, которая “совместима” (звучит!) с предыдущими версиями php.

if (function_exists('date_default_timezone_set'))
date_default_timezone_set('Europe/Moscow');

Выдержка из List of Supported Timezones

Europe/Kiev
Europe/London
Europe/Minsk
Europe/Moscow
Europe/Riga
Europe/Samara
Europe/Simferopol
Europe/Tallinn
Europe/Tiraspol
Europe/Uzhgorod
Europe/Volgograd
Asia/Yekaterinburg
Asia/Novosibirsk
Asia/Krasnoyarsk
Asia/Irkutsk
Asia/Kamchatka
Asia/Magadan
Asia/Sakhalin

upd Для date.timezone в столбце Changeable стоит PHP_INI_ALL. Это означает установить её значение можно не только во время выполнения скрипта, но и в конфигурационных файлах:

- в .htaccess или httpd.conf следует добавить строку вида
php_value date.timezone "Europe/Moscow"

- в php.ini строку вида
date.timezone = Europe/Moscow

Опубликовано Май 28, 2009 | автор: levik  |  Комментарии (3) »

Отключаем автозапуск на флэшках и компакт-дисках

Довольно часто вирусы распространяются через сменные носители путем записи в автозапуск на флешку или (реже) при записи компакт диска. Конечно, у многих пользователей установлено антивирусное программное обеспечение, которое позволяет блокировать автозапуск приложений со сменных носителей и удалять зараженные файлы автоматической загрузки. Однако, бывает всякое.. Базы не обновились вовремя, новый, никому неизвестный вирус.. Да и в конце концов, быть может нам не нужен автозапуск, а просто файлик скопировать..

Редактируем автозапуск силами “проводника” Windows

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

Отключаем автозапуск в редакторе групповой политики (проверено лично )

Проверенный вариант - отключить автозапуск редактированием групповой политики. Запускаем (Пуск - выполнить) gpedit.msc.

Далее «политика Локальный компьютер» - «Конфигурация компьютера» - «Административные шаблоны» - «система» - справа выбираем пункт «Отключить автозапуск»; открываем свойства этого пункта и ставим «Включен». Ниже - в меню “Отключить автозапуск” следует выбрать “На всех дисководах”.

Отключаем автозапуск в реестре (кто проверит - отпишитесь в комментариях)

Отключение автозапуска в Windows XP:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\CurrentVersion\Explorer\ AutoplayHandlers\CancelAutoplay\Files] “*.*”=”"

В Vista не пробовал. Если у кого получится - сообщите. Заранее благодарен.

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

Однако, при соблюдении некоторых простых правил, можно почти полностью оградить свой компьютер от заражения вирусами.

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

Импорт csv в virtuemart для больших файлов

Virtuemart + joomla - неплохой и “бесплатный” инструмент для организации интернет-магазина. Для синхронизации, например с 1с (что требуется довольно часто), в virtuemart используется инструмент импорт-экспорт через CSV. Все бы ничего - после определенной настройки данные импортируются, но при солидных объемах магазина - несколько тысяч товаров в csv-файле, даже без описаний, скрипт импорта выполняется несколько минут. Площадки виртуального хостинга же, частенько, имеют ограничение на это самое время выполнения скрипта. Вот и получаем Читать целиком »

Опубликовано Май 13, 2009 | автор: levik  |  Комментарии (3) »

Водяные знаки на 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, который кстати можно использовать для массового наложения водяных знаков на все файлы из каталога.

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

Удачи!

UPD

http://darkair.livejournal.com/11583.html

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