Отправляет email-рассылки с помощью сервиса Sendsay

Все о PHP и даже больше

  Все выпуски  

Все о PHP и даже больше # 26


Информационный Канал Subscribe.Ru

Все о PHP и даже больше...

.:: Путь от начинающего до эксперта ::.

# 26
1/2005


13 февраля 2005г.

 
Проект сайта: GreatWeb.Ru
Ведущий рассылки: Бабушкин Евгений

Всем привет!

:.:: Наши проекты:


GreatWeb.Ru - Портал продвинутых юзеров. ЕЖЕдневные сетевые новости, обзоры софта и железа, а так же все о веб-дизайне, раскрутке, выбору хостинга и не только... С нами скучать не придется! Есть раздача асек!

Films.GreatWeb.Ru - Огромный каталог фильмов, содержащий самые популярные и известные фильмы! + в каталоге есть короткая рецензия на каждый фильм! Будем киньчик смотреть :)

Форум продвинутых юзеров. Отличный форум! Каждый день наша группа выкладывает свежий софт! Присоединяйся! каждый новый пользователь, набравший 20 и большее голосов получит на халяву семизнак ICQ! Самым активным пользователям будет выделен красивый почтовый ящик на 5 mb. Ваше_имя@greatweb.ru


У Вас есть вопросы о языке PHP? Хотите получить на них ответы? Оставляйте их в нашем культовом форуме: FORUM.GREATWEB.RU в разделе Рассылка “Все о PHP” .

.:: Новости GreatWeb.Ru

 

С момента последнего выпуска прошло много времени, наверное, все заметили (-; Это связано с моей занятостью в последнее время :( много работы было… сессия и т.п. Но теперь я снова в строю :) На днях я написал первую версию скрипта “Файл почтой”: greatweb.ru/sender можете пользоваться, все вопросы и предложения ко мне на форум.

P.S. Кто заинтересован в рекламе пишите мне, усе решим (-;

.:: Реализация GZIP compression



Сейчас я рассмотрю вопрос о реализации GZIP сжатия, т.к. не так много статей написано по этой теме. Я не буду объяснять что это такое, для этого есть мануалы: php.net Скажу лишь одно — GZIP сжатия ускоряет вывод станицы в несколько раз!

Реализовать GZIP compression очень легко, достаточно лишь добавить ob_start("ob_gzhandler"); перед тем как собираетесь выводить что-либо.

Как же проверить как сильно сжимает наш HTML код GZIP? Это тоже достаточно легко:
В своем PHP скрипте кладем кук: setcookie('page_size',strlen($tmp).','.strlen($tmp  2)); // где $tmp – станица до сжатия; $tmp2 – станица после сжатия. Чтобы полить станицу после сжатия делаем следующее: $tmp2=ob_gzhandler($str); Только не нужно вызывать и ob_start("ob_gzhandler") и ob_gzhandler($str) одновременно! Выбираем что-то одно. Идем далее... Чтобы все это увидеть в “красивом виде” пишем следующий JS код и вставляем в вашу страницу, которую Вы питаетесь сжать:

 <script language=JavaScript>function getCookie(name)

{

        var
p = name + "="

        
var si = document.cookie.indexOf(p)

        if(
si == -1) return null

        
var ei = document.cookie.indexOf(";", si + p.length)

        if(
ei == -1) ei = document.cookie.length

        
return unescape(document.cookie.substring(si + p.length, ei))

}

</script>

[ GZIP compression enabled<script language=JavaScript>

                                < !--

                                 var s = getCookie("page_size");

                                 if (s) {

                                         var p = s.split(/,\s*/);

                                        document.write(": "+p[1]+"/"+p[0]+" ("+(100-Math.round(p[1]/p[0]*100))+"%)");

                                 }

                                 //-->

                                < /script>

                         ]

Если у Вас старая версия я Вам советую ее обновить (-; если же не хотите юзайте этот класс для PHP 4.0.1+:

Вот и все. Юзайте на здоровье :)

.:: Отправка писем с аттачами


Этот вопрос встречается оочень часто на различных форумах. Хотя и ответов существует достаточно, что в большенстве они имеют ошибки. Если кто-то хоть раз задавался этим вопросом то скорее всего вы попадали на статью http://php.spb.ru/php/mail.html "Отправка писем с аттачами / html-страницами, через сокет, учет кодировок win koi dos". Я чуть переделал данный класс, добавил возможность выбора между HTML страницами и обычным текстом, а так же теперь не используются сокеты.

class html_mime_mail {
  var
$headers;
  var
$multipart;
  var
$mime;
  var
$html;
  var
$parts = array();

function
html_mime_mail($headers="") {
    
$this->headers=$headers;
}

function
add_html($html="") {
    
$this->html.=$html;
}

function
build_html($orig_boundary,$kod,$type="plain") {
    
$this->multipart.="--$orig_boundary\n";
    if (
$kod=='w' || $kod=='win' || $kod=='windows-1251') $kod='windows-1251';
    else
$kod='koi8-r';
    if (
$type!="html" && $type!="plain") $type="plain";
    
$this->multipart.="Content-Type: text/$type; charset=$kod\n";
    
$this->multipart.="BCC: [email]del@ipo.spb.ru[/email]\n";
    
$this->multipart.="Content-Transfer-Encoding: Quot-Printed\n\n";  
    
$this->multipart.="$this->html\n\n";
}


function
add_attachment($file="", $name="", $c_type="application/octet-stream") {

    
$this->parts[]=array("body"=>$file, "name"=>$name,"c_type"=>$c_type);
}


function
build_part($i) {
    
$message_part="";
    
$message_part.="Content-Type: ".$this->parts[$i]["c_type"];
    if (
$this->parts[$i]["name"]!="")
       
$message_part.="; name = \"".$this->parts[$i]["name"]."\"\n";
    else
       
$message_part.="\n";
    
$message_part.="Content-Transfer-Encoding: base64\n";
    
$message_part.="Content-Disposition: attachment; filename = \"".
       
$this->parts[$i]["name"]."\"\n\n";
    
$message_part.=chunk_split(base64_encode($this->parts[$i]["body"]))."\n";
    return
$message_part;
}


function
build_message($kod) {
    
$boundary="=_".md5(uniqid(time()));
    
$this->headers.="MIME-Version: 1.0\n";
    
$this->headers.="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
    
$this->multipart="";
    
$this->multipart.="This is a MIME encoded message.\n\n";
    
$this->build_html($boundary,$kod);
    for (
$i=(count($this->parts)-1); $i>=0; $i--)
      
$this->multipart.="--$boundary\n".$this->build_part($i);
    
$this->mime = "$this->multipart--$boundary--\n";
}


function
send($to, $from, $subject) {

    
mail("$to", "$subject", $this->mime, "From: $from\r\n".$this->headers);

}
}

  $mail=new html_mime_mail();
  
$mail->add_html("HTML OR TEXT here");
  
$mail->add_attachment("/bin/","ls");
  
$mail->build_message('win'); // если не "win", то кодиpовка koi8
  
$mail->send('ПОЧТОВЫЙ_ХОСТ_ВАШЕГО_ПРОВАЙДЕРА',
              
'КОМУ_(E-MAIL)',
              
'ОТ_КОГО_(E-MAIL)',
              
'ТЕМА ПИСЬМА');

Модифицированный мною класс 100% работает. Так что претензии вида: ".. у меня не работает.." не принимаются (-;

.:: Генератор картинок со случайным числом

 

Написание данного скрипта (найденный на одном известном форуме) принадлежит юзеру под ником Bred Vilchec привожу код и описание ниже:

В целях повышения опыта и изучения возможностей gd и бал написан сабж.
Пришлось провести маленькое исследование соотношения читабельности к сложности расшифровки
таких картинок на нескольких популярных сайтах. В одних, например chat.ru OCR-ивание
не составит особого труда, в других, типа www.e-gold.com, цифры иногда не может распознать и
сам пользователь. Самой лучшей системой имхо оказалась система регистрации на ramblere,
http://mail.rambler.ru/new_user.html, по её образу и подобию я и написал сабж.

Скрипт выводит заданное число цифр в изображении заданных размеров.
Случайные параметры:
1. Размер цифры
2. Местоположение цифры (порядок цифр сохраняется)
3. TTF-шрифт, которым напечатана цифра, случайный из заданного списка
4. Угол наклона цифры относительно горизонтали
5. Зашумленность точками и линиями

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

Для работы скрипта нужно скопировать несколько(или один) TTF-шрифтов
(копируются из "C:\Windows\Fonts")в папку со скриптом, изменив соответствующие записи в скрипте.

Само число, показанное на картинке заносится в переменную $number.

<?php

$img_x          
= 80;   //Ширина изображения, по умолчанию-100
$img_y          = 26;   //Высота изображения, по умолчанию-30
$num_n          = 5;    //Число цифр, default-4
$font_min_size  = 12;   //Минимальный размер шрифта, по умолчанию-12
$lines_n_max    = 1;    //Максимальное число шумовых линий, по умолчанию-2
$nois_percent   = 4;    //Зашумленность цветами фона и текста, в процентах, по умолчанию-3
$angle_max      = 18;   //Максимальный угол отклонения от горизонтали по часовой стрелке и против, по умолчанию-20

$font_arr=glob(dirname(__FILE__)."/fonts/*.ttf");

$im=imagecreate($img_x, $img_y);
//создаем необходимые цвета
$text_color = imagecolorallocate($im, 0, 0, 0);       //цвет текста
$nois_color = imagecolorallocate($im, 0, 0, 0);       //цвет зашумляющих точек и линий
$img_color  = imagecolorallocate($im, 255, 255, 255); //цвет фона
//заливаем изображение фоновым цветом
imagefill($im, 0, 0, $img_color);
//В переменной $number будет храниться число, показанное на изображении
$number='';

for (
$n=0; $n<$num_n; $n++){
    
$num=rand(0,9);
    
$number.=$num;
    
$font_size=rand($font_min_size, $img_y/2);
    
$angle=rand(360-$angle_max,360+$angle_max);

    
$font_cur=rand(0,count($font_arr)-1);
    
$font_cur=$font_arr[$font_cur];
    
//вычисление координат для каждой цифры, формулы обеспечивают нормальное расположние
    //при любых значениях размеров цифры и изображения
    
$y=rand(($img_y-$font_size)/4+$font_size, ($img_y-$font_size)/2+$font_size);

    
$x=rand(($img_x/$num_n-$font_size)/2, $img_x/$num_n-$font_size)+$n*$img_x/$num_n;

    
imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_cur, $num);
};
//Вычисляем число "зашумленных" пикселов
$nois_n_pix=round($img_x*$img_y*$nois_percent/100);
//зашумляем изображение пикселами цвета текста
for ($n=0; $n<$nois_n_pix; $n++){
    
$x=rand(0, $img_x);
    
$y=rand(0, $img_y);
    
imagesetpixel($im, $x, $y, $nois_color);
};
//зашумляем изображение пикселами фонового цвета
for ($n=0; $n<$nois_n_pix; $n++){
    
$x=rand(0, $img_x);
    
$y=rand(0, $img_y);
    
imagesetpixel($im, $x, $y, $img_color);
};

$lines_n=rand(0,$lines_n_max);
//проводим "зашумляющие" линии цвета текста
for ($n=0; $n<$lines_n; $n++){
    
$x1=rand(0, $img_x);
    
$y1=rand(0, $img_y);
    
$x2=rand(0, $img_x);
    
$y2=rand(0, $img_y);
    
imageline($im, $x1, $y1, $x2, $y2, $nois_color);
};

Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");

header("Content-type: image/png");
imagepng($im);
imagedestroy($im);

//В переменной $number хранится число, показанное на изображении

?>

Применение данного скрипта можно увидеть у меня: http://greatweb.ru/sender

.::Внимание! Акция для Web-мастеров!!!

 

Наша рассылка и GreatWeb.Ru продолжает акцию (с небольшими изменениями в правилах): Любой сайт (>100 посетителей и тИЦ > 100) разместивший нашу кнопку на главной странице получает возможность увидеть свой сайт (его линк + описание) на страницах нашей рассылки! Напомним, что у нашей рассылки более 10.000 подп.! Успей разместить наш код! Кто поставит пишите на admin@greatweb.ru

<A href="http://greatweb.ru/">
<IMG alt="ЕЖЕдневный софт, фильмы, mp3, новости!" src="http://greatweb.ru/knopka.gif" width="88" height="31" border=0>
</A>

.:: Участники нашей акции

 

  •   www.skytechair.ru - Интернет-магазин климатической техники SkyTechAir.ru
  •   www.reiner.org.ua - Reiner.Blog - Daily Point :: Все самое интересное.
  •   www.astrohit.com - Бесплатный личный гороскоп, гороскоп совместимости, личный прогноз. Консультации астрологов.
  •   www.webww.net.ru - Бесплатная электронная библиотека.
  •   www.rap-hip-hop.info - RAP-HIP-HOP портал, MP3, клипы, фото, инфа, интервью, граффити, рейтинг rap-hip-hop сайтов, скины Winamp.
  •   www.managment-eskort.narod.ru - Комплексная система управления эффективностью труда.

    Господа, не снимайте свои ссылки, чтобы остаться в этом списке в следующих выпусках!

     

    Все свои вопросы Вы можете задавать на нашем форуме.

    © 2002-2005 Copyright Eugene Babushkin & GreatWeb.Ru
    Копирование материалов рассылки возможно только с письменного разрешения.


  • http://subscribe.ru/
    http://subscribe.ru/feedback/
    Подписан адрес:
    Код этой рассылки: comp.soft.prog.webphp
    Отписаться

    В избранное