|
|||||||||||||
|
|||||||||||||
Своя рассылка на PHP |
||||
|
|
Новости
20 бoлeзнeй oт кoта
Опасность вейпинга
Вpeднa ли coя жeнщинaм
Вcя пpавда o яйцаx
Вpaчи нaпoмнили o pискe зapaзиться гeпaтитoм в сaлoнaх кpaсoты
В кaкoе время сyтoк лyчше не лечиться
Tиxий чаc дважды в нeдeлю cнижаeт pиcк инфаpкта и инcульта в два pаза
Слaдкaя гaзиpoвкa вoздействyет нa opгaнизм
Почeмy витaминныe добaвки нe пpиноcят пользы
|
<form method="post" action="ras.php" enctype="multipart/form-data"> <input type="text" name="email" size="30"> <input type="submit" name="submit" value="подписаться"></form>Итак, в окне для ввода текста, с именем email и видимой длиной в 30 символов, будет вводиться адрес электронной почты. После нажатия на кнопку с надписью "подписаться", адрес будет передан скрипту 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 "<center>"; if (is_file($file)) // далее проверяем адрес вышеописаными функциями { $maillist = file($file); if (!$email == '') { if (test_mail($email)) { if (!copy_mail($email)) { $maillist[] = "\n$email"; print "E-mail: $email добавлен базу рассылки</center>"; } else print "E-mail: $email уже есть в базе</center>"; } else print "E-mail: $email не сушествует</center>"; } else print "</center>"; } else print "Не найден файл $file ! Пожалуйста <A HREF=\"mailto:$fromemail\">сообщите</a> мне о ошибке.</center>"; // выводи на экран форму с предложением подписки и отписки echo "<br><center>Подписаться на рассылку<form method=\"post\" action=\"ras.php\" enctype=\"multipart/form-data\">"; echo "Введите mail:<input type=\"text\" name=\"email\" size=\"30\">< input type=\"submit\" name=\"submit\" value=\"подписаться\"></form></center>"; echo "<CENTER><br><br><form method=\"post\" action=\"ras.php\" enctype=\"multipart/form-data\">"; echo "Отписаться от рассылки<br>Введите mail:"; echo "<input type=\"text\" name=\"delmail\" size=\"15\">< input type=\"submit\" name=\"submit\" value=\"Отписаться\"></form></CENTER>"; // если пользователь решил отписаться - удаляем введеный адрес $flag = false; $fw = fopen($file, "w"); for ($i = 0; $i < sizeof ($maillist); $i++) if (trim(strtolower($delmail)) == trim(strtolower($maillist[$i]))) { if (!$delmail == '') { print "<center>$delmail удален из базы рассылки</center>"; $flag = true; } } else fputs($fw, $maillist[$i]); // введеного адреса в базе нет fclose($fw); if (!$delmail == '') if (!$flag) print "<center>$delmail не найден в базе рассылки</center>"; ?>Вот наш код сохранения и удаления адресов готов. Теперь надо позаботится о средствах отправки почты. Не будем же мы через Аутлук отсылать? Как уже говорилось, защитим возможность отправки паролем, который будем вводить на специальной форме:
<form method="POST" action="out.php"> <input type="password" name="pass" value=""> <input type="submit" value="войти"> </form>Поле для ввода с именем pass и будет служить для ввода пароля. После нажатия на кнопку с надписью "войти", пароль будет передан скрипту out.php:
<? $subject = "Рассылка моего сайта"; // тема рассылки $fromemail = "мое@мыло"; // ваш адрес (для ответов) $file = "maillist.txt"; // список адресов подписчиков $password = "secretpassword"; // ваш пароль для рассылки if ($pass == $password) // если пароль ввели правильный // то выводим форму с полями для ввода: // адрес отправителя, текст письма, тело письма // кнопку для отправления // после нажатия на кнопку, передаем данные скрипту send.php { echo "<font size=\"-1\"><hr><form method=\"POST\" action=\"send.php\">"; echo "адрес отправителя<br><input type=\"text\" name=\"fromemail\" value=\"$fromemail\" size=\"25\"><br>"; echo "тема письма<br><input type=\"text\" name=\"subject\" value=\"$subject\" size=\"50\">"; echo "<br>текст письма:<br><textarea name=\"body\" rows=\"8\" cols=\"50\"></textarea>"; echo "<br><input type=\"submit\" value=\"Отправить сообщение\"></form></font>"; print "<i>В базе<b>". sizeof($maillist) ."</b> адресов</i><br><hr>"; for ($i = 0; $i < sizeof ($maillist); $i++) print $maillist[$i]. "<br>"; } // если пароль неверный - просим ввести еще раз else echo "<form method=\"POST\" action=\"ras.php\">< input type=\"password\" name=\"pass\" value=\"\"><input type=\"submit\" value=\"Управление\"></form>"; ?>Осталось рассмотреть только один скрипт - тот самый, который будет отсылать почту:
<? $odr = "\n\n\n Для отказа от подписки воспользуйтесь ссылкой\n"; $homepage = "адрес.сайта/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) ." адресов<br>"; for ($i = 0; $i < sizeof ($maillist); $i++) { #echo($maillist[$i]."<br>"); mail($maillist[$i], $subject, $body ."$odr $homepag?delmail=$maillist[$i]", "From: $fromemail"); } echo "Готово!"; ?>Тут все просто: получаем значения, введенные в предыдущюю форму и в цикле отправляем их по очереди на каждый из адресов.
seo & website usability | inet | os faq | hardware faq | memory | video | cpu | hdd | mainboard faq | printer & scaner | modem | mobiles | hackzone |
На главную | Cookie policy | Sitemap