TeaM RSN » Своя рассылка на PHP Своя рассылка на PHP phpВ интернете есть много бесплатных сервисов. В том числе и услуги по рассылке писем подписчикам. Некоторые из них очень хороши. Но раз уж они бесплатны, значит тут же в письмах появляется реклама. Да и немалые формы для подписки с логотипом предоставителя услуг многих не устравивают. Так почему бы не написать простенький движок для своей рассылки и отсылать письма своими силами? Давайте разберемся, что нам для этого потребуется. Для того чтоб посетители имели возможность подписаться на вашу рассылку необходима форма для ввода адреса електронной почты. После ввода адрес надо запомнить. Давайте адреса будем сохранять в файле maillist.txt по одному адресу в строчке. После того как адрес будет сохранен, давайте выведим соответствующее сообщение и отобразим форму для подписки еще одного адреса или удаления существующего. Вот собственно почти и все. Осталось добавить только возможность отправки писем. Для безопастности, давайте на возможность отправки писем поставим пароль - необходима форма для ввода пароля. Далие потребуются формы для заполнения адреса отправителя и темы, а также для самого текста. Ну и, наконец, сам скрипт, который будет отсылать письма. А теперь все по порядку. Форма для ввода адреса електронной почты будет состоять только из окна для ввода адреса и кнопки для подтверждения: Итак, в окне для ввода текста, с именем email и видимой длиной в 30 символов, будет вводиться адрес електронной почты. После нажатия на кнопку с надписью подписаться, адрес будет передан скрипту ras.php для занесения в базу рассылки. Далее давайте расмотрим скрипт ras.php который будет сохранять адрес почты в файле, выводить сообщение о результате и формы для подписки и отписки. Скрипт можно исполнить совсем просто - сохранить адрес, вывести соответствующее сообщение. Но могут возникнуть проблемы: кто-то может случайно подписаться несколько раз, кто-то может допустить опечатку и ввесли в поле адреса недопустимый символ или нарошно ввести билеберду. В таком случае база рассылки будет загрязнятсья, а неверные адреса станут приводить к ошибкам в работе скрипта. Вывод ясен - перед сохранением адреса следует проверить его на соответствие стандартам имен адресов електронных почтовых ящиков, а также на наличие в базе рассылки. Для того чтоб не рассматривать код по частям, я дам комментарии в самом коде: < ? $file = "maillist.txt"; // файл, содержащий адреса error_reporting(0); // запрещаем вывод сообщений о возможных ошибках function test_mail($char) // функция, проверяющая реальность адреса { $flag = false; if (eregi("^[_.0-9a-z-]+@([0-9a-z][-0-9a-z.]+).([a-z]{2,3}$)", $char)) $flag = true; if ($flag) return true; else return false; } $email = trim(strtolower($email)); // получаем введеный в // форму адрес с // символами в нижнем регистре function copy_mail($char) // проверяем, есть ли такой адрес в базе { $file = "maillist.txt"; $list = file($file); for ($i = 0; $i < sizeof ($list); $i++) if ($char == trim($list[$i])) $flag = true; if ($flag) return true; else return false; } echo "“; if (is_file($file)) // далие проверяем адрес вышеописаными функциями { $maillist = file($file); if (!$email == ‘) { if (test_mail($email)) { if (!copy_mail($email)) { $maillist[] = ” $email”; print “e-mail: $email добавлен базу рассылки“; } else print “e-mail: $email уже есть в базе“; } else print “e-mail: $email не сушествует“; } else print ““; } else print “Не найден файл $file ! Пожалуйста сообщите мне о ошибке.“; // выводи на екран форму с предложением подписки и отписки echo “Подписаться на рассылку“; echo “Введите mail:“; echo ““; echo “Отписаться от рассылкиВведите mail:”; echo ““; // если пользователь решил отписаться - удаляем введеный адрес $flag = false; $fw = fopen($file, “w”); for ($i = 0; $i < sizeof ($maillist); $i++) if (trim(strtolower($delmail)) == trim(strtolower($maillist[$i]))) { if (!$delmail == ') { print "$delmail удален из базы рассылки“; $flag = true; } } else fputs($fw, $maillist[$i]); // введеного адреса в базе нет fclose($fw); if (!$delmail == ‘) if (!$flag) print “$delmail не найден в базе рассылки“; ?> Вот наш код сохранения и удаления адресов готов. Теперь надо позаботится о средствах отправки почты. Не будем же мы через Аутлук отсылать ?. Как уже говорилось, защитим возможность отправки паролем, который будем вводить на специальной форме: Поле для ввода с именем pass и будет служить для ввода пароля. После нажатия на кнопку с надписью войти, пароль будет передан скрипту out.php: < ? $subject = "Рассылка моего сайта"; // тема рассылки $fromemail = "мое@мыло"; // ваш адрес (для ответов) $file = "maillist.txt"; // список адресов подписчиков $password = "secretpassword"; // ваш пароль для рассылки if ($pass == $password) // если пароль ввели правильный // то выводим форму с полями для ввода: // адрес отправителя, текст письма, тело письма // кнопку для отправления // после нажатия на кнопку, передаем данные скрипту send.php { echo "“; echo “адрес отправителя“; echo “тема письма“; echo “текст письма:“; echo ““; print “В базе“. sizeof($maillist) .” адресов“; for ($i = 0; $i < sizeof ($maillist); $i++) print $maillist[$i]. "“; } // если пароль неверный - просим ввести еще раз else echo “ “; ?> Осталось рассмотреть только один скрипт - тот самый, который будет отсылать почту: < ? $odr = " Для отказа от подписки воспользуйтесь ссылкой "; $homepage = "http://адрес.сайта/ras.php"; error_reporting(0); $subject = $http_post_vars["subject"]; $body = $http_post_vars["body"]; $subject = stripslashes($subject); $body = stripslashes($body); $file = "maillist.txt"; $maillist = file($file); print "В базе". sizeof($maillist) ." адресов“; for ($i = 0; $i < sizeof ($maillist); $i++) { #echo($maillist[$i]."“); mail($maillist[$i], $subject, $body .”$odr $homepag?delmail=$maillist[$i]”, “from: $fromemail”); } echo “Готово!”; ?> Тут все просто: получаем значения, введенные в предыдущюю форму и в цыкле отправляем их по очереди на каждый из адресов. Вот совсем и несложно! Теперь вы имеете мощный инструмент по ведению полностью собственой рассылки. Нет больше для вас никаких правил. Что хотите то и пишите в своей рассытке. Полная свобода по конфигурации и внешнему виду форм для подписки. Разумеется, данный код является лишь минимальным набором. Например, с помощью функции mail можно организовать себе извещение о новом подписчеке, а подписчику о удачной регистрации, рассказать побольше о рассылке. Разумеется, говоря о полной свободе, я не в коем случае не имел в виду принудительную подписку ? или, проще говоря, спам. Если вдруг кто решит рассылать спам таким образом, то пусть учтет что на него сразу начнут жаловатся администрации хостинга. И неважно платный хостинг или нет, если администрация хостинга заметит подобные действия, она анулирует предоставление своих услуг вам без возмещения убытков. А с халявными хостингами еще туже. Во-первых, надо просить персональное разрешения у администрации на открытие данной функции, во-вторых, как правило, стоит лимит в 1 письмо за минуту. Так что господа спамеры, обламайтесь :) Оставить комментарийComment RSS Добавил: web-programming Назад: Как удалить строку из файла на Php Далее: CGI веб приложения на Python Постоянные ссылки При копировании ссылка на TeaM RSN обязательна! URI Html (ЖЖ) BB-код (Для форумов) Оставить комментарий Вы должны войти, чтобы оставить комментарий. TeaM RSN О сайтеСкрипты, скачать скрипты, web-программирование, разработка сайтов, cms, коммерческие скрипты О сайте Публикации Реклама I love you hz Рубрики Asp C++/C# Delphi Javascript Perl php Python Разное Релизы Сайтостороение Мета Регистрация Войти RSS Комментарии RSS Партнеры Комсомольская транспортная перевозка грузов. | ванны акриловые, ванны, продажа душевых кабин | арбитраж арбитраж ЗАО взыскание долгов Добавить: Архив Апрель 2008 Ноябрь 2007 Октябрь 2007 Сентябрь 2007 Август 2007 Июль 2007 Июнь 2007 Май 2007 Апрель 2007 Март 2007 Февраль 2007 Друзья Приколы и юмор  2006 - 2008, TeaM RSN Модернизация » tommy, дизайн » ericulous, перевод » mywordpress.ru , , - online electrolux - fargo black decker sharp ar-5415 dufour 2112 tag heuer dr sky link de luxe 5040.11 3d zip-lock wow bella italia nokia 6021 locus