master09
Местный
- Сообщения
- 68
- Реакции
- 8
Всем привет вот возникла идея сделать свою рассылку! пользователь подписывается указывая свой email исключительно только подписавшимся будет рассылка. ну например появилась новость подписались 10 человек я захожу на страницу рассылки пишу отправляю!Все хорошо но есть вопросы по поводу защиты?
Вот весь код
Далее давайте рассмотрим скрипт ras.php который будет сохранять адрес почты в файле, выводить сообщение о результате и формы для подписки и отписки.
Возможно ли как то защитить то есть залив эти файл на хостинг будет ли вообще это работать и могут ли как ни будь залить свой файл?
Вот весь код
<form method="post" action="ras.php" enctype="multipart/form-data">
<input type="text" name="email" size="30">
<input type="submit" name="submit" value="подписаться">
</form>
<input type="text" name="email" size="30">
<input type="submit" name="submit" value="подписаться">
</form>
$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>";
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>
<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>";
$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 "Готово!";
$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 написал(а):что ни кто не подскажет!
- Сообщения
- 322
- Реакции
- 72
А если в файле много адресов? У тебя время вополнения скрипта ограничено, и не всем пользователи получат твое сообщение. А как же возможное ограничеие на количество отправляемых писем, которое устанавливает хостер? В случае какой-то ошибки очень сложно будет повторно начать рассылку, т/к/ не отмечаются адреса, на которые уже были отправлены письма.
Так то да,тут я поддержу оппонента...)) И,хотелось бы увидеть данный скрипт в действии,чтоб узнать в реале,что он может делать... Как говорится,лучше один раз увидеть чем сто раз услышать...)MegaGoblin написал(а):А если в файле много адресов? У тебя время вополнения скрипта ограничено, и не всем пользователи получат твое сообщение. А как же возможное ограничеие на количество отправляемых писем, которое устанавливает хостер? В случае какой-то ошибки очень сложно будет повторно начать рассылку, т/к/ не отмечаются адреса, на которые уже были отправлены письма.
master09
Местный
- Сообщения
- 68
- Реакции
- 8
Если надо могу продемонстрировать правду не это рассылка но рабочая самое главное!alexsoft59 написал(а):Так то да,тут я поддержу оппонента...)) И,хотелось бы увидеть данный скрипт в действии,чтоб узнать в реале,что он может делать... Как говорится,лучше один раз увидеть чем сто раз услышать...)
Ну если реально можешь то делай красиво,ждем с нетерпением...))master09 написал(а):Если надо могу продемонстрировать правду не это рассылка но рабочая самое главное!