Своя рассылка подписчикам

  • Автор темы master09
  • Дата начала
master09
Участник
Сообщения
68
Реакции
8
Всем привет вот возникла идея сделать свою рассылку! пользователь подписывается указывая свой email исключительно только подписавшимся будет рассылка. ну например появилась новость подписались 10 человек я захожу на страницу рассылки пишу отправляю!Все хорошо но есть вопросы по поводу защиты?
Вот весь код
<form method="post" action="ras.php" enctype="multipart/form-data">
<input type="text" name="email" size="30">
<input type="submit" name="submit" value="подписаться">
</form>
Далее давайте рассмотрим скрипт ras.php который будет сохранять адрес почты в файле, выводить сообщение о результате и формы для подписки и отписки.

$file = "maillist.txt"; // файл, содержащий адреса

error_reporting(0); // запрещаем вывод сообщений о возможных ошибках

function test_mail($char) // функция, проверяющая реальность адреса
{
if (preg_match("/^[_\.0-9a-z-]+@([0-9a-z][-0-9a-z\.]+)\.([a-z]{2,3}$)/", $char)) return true;
return false;
}

// получаем введеный в форму адрес с символами в нижнем регистре
$email = trim(strtolower($email));

function copy_mail($char) // проверяем, есть ли такой адрес в базе
{
global $file;
$list = file($file);
for ($i = 0; $i < sizeof ($list); $i++)
if ($char == trim($list[$i])) return true;
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>
$subject = "Рассылка моего сайта"; // тема рассылки
$fromemail = "мое@мыло"; // ваш адрес (для ответов)
$file = "maillist.txt"; // список адресов подписчиков
$password = "secretpassword"; // ваш пароль для рассылки

if ($_POST['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 = "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) ." адресов<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 "Готово!";
Возможно ли как то защитить то есть залив эти файл на хостинг будет ли вообще это работать и могут ли как ни будь залить свой файл?
 
master09
Участник
Сообщения
68
Реакции
8
что ни кто не подскажет!:crazy:
 
alexsoft59
Капитан очевидность...).
Участник
Сообщения
347
Реакции
29
master09 написал(а):
что ни кто не подскажет!:crazy:
Это что за скрипт то хоть такой,и что именно ты хочешь сделать?
 
dantexlll
Участник
Сообщения
26
Реакции
0
Skype
кто продаст такую рассылку ?
 
MegaGoblin
PHP, JS, AJAX, CSS, HTML
Участник
Сообщения
322
Реакции
72
А если в файле много адресов? У тебя время вополнения скрипта ограничено, и не всем пользователи получат твое сообщение. А как же возможное ограничеие на количество отправляемых писем, которое устанавливает хостер? В случае какой-то ошибки очень сложно будет повторно начать рассылку, т/к/ не отмечаются адреса, на которые уже были отправлены письма.
 
alexsoft59
Капитан очевидность...).
Участник
Сообщения
347
Реакции
29
MegaGoblin написал(а):
А если в файле много адресов? У тебя время вополнения скрипта ограничено, и не всем пользователи получат твое сообщение. А как же возможное ограничеие на количество отправляемых писем, которое устанавливает хостер? В случае какой-то ошибки очень сложно будет повторно начать рассылку, т/к/ не отмечаются адреса, на которые уже были отправлены письма.
Так то да,тут я поддержу оппонента...)) И,хотелось бы увидеть данный скрипт в действии,чтоб узнать в реале,что он может делать... Как говорится,лучше один раз увидеть чем сто раз услышать...)
 
master09
Участник
Сообщения
68
Реакции
8
alexsoft59 написал(а):
Так то да,тут я поддержу оппонента...)) И,хотелось бы увидеть данный скрипт в действии,чтоб узнать в реале,что он может делать... Как говорится,лучше один раз увидеть чем сто раз услышать...)
Если надо могу продемонстрировать правду не это рассылка но рабочая самое главное!
 
alexsoft59
Капитан очевидность...).
Участник
Сообщения
347
Реакции
29
master09 написал(а):
Если надо могу продемонстрировать правду не это рассылка но рабочая самое главное!
Ну если реально можешь то делай красиво,ждем с нетерпением...))
 
romcka8
Участник
Сообщения
65
Реакции
3
А пример можно посмотреть?
 
Сверху