Zip и UnZip на PHP
Сегодня встала задача сделать поддержку компрессии и декомпрессии в программе на PHP. На первый взгляд задача простая т.к. PHP5 уже содержит методы для работы с архивами ZIP. Во первых это функции вида zip_open, zip_read. Во вторых - есть шикарный класс ZipArchive который выполнит за вас всю грязную работу.
С виду все прекрасно, однако как только дело дошло до боевого сервера оказалось что модуль позволяющий использовать средства для работы с ZIP не установлен.
Нашел два решения данной проблемы - оба в использовании библиотеки gzip.
Первое решение состоит в использовании PhpConcept Library Zip - написанная Винсентом Блаветом и распространяемая по лицензии GNU/LGPL
Второе решение нашел совершенно случайно в phpMyAdmin - если глянуть в папку /libraries/ то там можно найти два файла zip.lib.php и unzip.lib.php которые содержат классы для паковки и распаковки zip файлов соответственно.
как обработать BMP изображение используя PHP
Как известно библиотека GD не поддерживает возможность прочитать файлы формата BMP а пользователи (особенно малограмотные пользователи) часто так и норовят закачать на сайт фото или картинку в формате BMP. Как быть если закачать нельзя но очень хочется? Оказывается есть способ.
Здесь работающая демка а здесь сходник
Собственно всю грязную работу выполняет класс написанный Джеймсом Хайнрихом (James Heinrich) для своего проекта getID3(). Что интересно, в последних версиях проекта класс уже не умеет преобразовывать BMP в GD а только читает метаинформацию. На старую версию класса наткнулся совершенно случайно - она есть в phpThumb уже в полном варианте. Большое спасибо Джемс :)
Как используя GnuPG зашифровать сообщение из программы на PHP?
Встала задача - закодировать мейлы посылаемные с сервера крипростойким образом.
В принципе что сложного - ставим на сервер GnuPG, на рабочую станцию PGP импортируем на сервер открытый ключ с рабочей станции и дело в шляпе. Одна загвосдка - GnuPG - это консольная утилита которой для того чтобы зашифровать файл нужно его передать через stdin, результат будет выдан на stdout. Как вызвать ее из программы на PHP? Можно конечно создать временный файл и уже через переадресацию ввода вывода залить его в программу, но это то как то не секьюрно.
Оказывается в PHP есть отличная функция - proc_open, которая позволяет реализовать переадресацию стандартных потоков через pipes - просто и элегантно.
Вот что получилось:
Полезная функция для валидации email на JavaScript
function validateEmail(elementValue){ var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; return emailPattern.test(elementValue); }