как поставить заголовок Return-Path к письму посылаемому командой mail
я уже писал в блоге что можно поправить php.ini добавив
mail.force_extra_parameters = "-f your@emailaddres.ru"
но более удобно использовать пятый аргумент функции mail:
$email = "mail@yourdomain.ru"; $return_path = "mail@yourdomain.ru"; $from_path = "admin@yourdomain.ru"; $subject = "text message"; $content = "content of email"; $headers = "Content-Type: text/plain;\n"; $headers .= "Content-Transfer-Encoding: 7bit;\n"; $headers .= "Return-Path: <".$return_path.">\n"; $headers .= "From: <".$from_path.">\n"; $extra = '-f '.$return_path; mail($email, $subject, $content, $headers, $extra);
Как сделать скриншот из flv файла
1. Ставим на сервер ffmpeg
> svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ./ffmpeg
> cd ./ffmpeg
> ./configure
> make
> make install
2. Для создания GD картинки можно использовать, например вот такую функцию:
function Video2GD($filename){ $descriptors = array( 0 => array("pipe","r"), 1 => array("pipe","w"), 2 => array("pipe","w") ); $cmd = 'ffmpeg -i '.$filename.' -vframes 1 -f image2 /dev/stdout'; $cwd = '/tmp'; $env = array(); $process = proc_open($cmd, $descriptors, $pipes ); if (is_resource($process)) { fclose($pipes[0]); $data = stream_get_contents($pipes[1]); fclose($pipes[1]); $error = stream_get_contents($pipes[2]); fclose($pipes[2]); return imagecreatefromstring($data); } return false; }
пример использования функции Video2Gd:
$im = Video2GD('/yourvideofile.flv'); header('Content-Type: image/png'); imagepng($im);
Отладка PHP скриптов
Оказывается отлаживать приложения на PHP возможно если вы используете Eclipse c PDT, для этого необходимо скачать Studio Web Debugger - эта штука ставится как расширение PHP и позволяет эклипсу останавливаться на ваших точках остановки, проходить приложение по шагам, смотреть значения переменных и еще много чего. Радует то, что как Eclipse, так и Debugger доступны для различных платформ, и совершенно бесплатны, вот уж где коммунизм наступил...
Почему мне не нравится CodeIgniter
Сегодня потребовалось внести немного изменений в один проект на базе CodeIngniter - это же просто ужасть какой-то - у них нет переменной $_GET, совсем. Сначала я подумал что это бага, ан нет, оказывается, это системная функция, вот что они пишут на этот счет
GET data is simply disallowed by CodeIgniter since the system utilizes URI segments rather than traditional URL query strings (unless you have the query string option enabled in your config file). The global GET array is unset by the Input class during system initialization.
Т.е. пользуйтесь господа разработчики тем что дают и не пользуйтесь тем что есть. т.е. подход такой что CodeIgniter это не система в которой ПОТЕНЦИАЛЬНО можно сделать секюрно, это система в которой ПОТЕНЦИАЛЬНО нельзя сделать несекюрно.
Конечно подход хорош, но мне он не понравился, наверно я до него еще не дорос, или наоборот перерос...
Пришлось передавать данные не через GET а через параметор в адресе, но параметры через адресную строку передаются только буквенно-цифровые - а мне нужно было передать URL для редиректа, поначалу решил закодировать параметр как base64, но как оказалось что base64 оставляет кой какие не-буквенно-цифровые символы, например знаки == на конце текста, иногда. Тогда решил просто заменить все символы их числовыми представлениями в шестнадцатеричной системе - это прокатило.
Cпособ, скорее всего, годится только для строк содержащих только áглицкие буквы если есть неáглицкие может не сработать, но, если не сработает всегда же можно пропустить исходный текст через urlencode.
/** * Этим кодируем */ function an_encode($str){ $result = ''; for($i=0;$i<strlen($str);$i++){ $result .= dechex(ord($str[$i])); } return $result; } /** * Этим декодируем */ function an_decode($str){ $result = ''; for($i=0;$i<strlen($str)/2;$i++){ $result .= chr(hexdec($str[$i*2].$str[$i*2+1])); } return $result; }
Конечно, данные получаются в два раза длинее, но что делать, может кто знает лучший способ?