Справочники, инструменты, документация

PHP: Организация подписки на новости вашего сайта

Назначение: организация подписки на новости вашего сайта, вашу другую информацию. Теперь нет необходимости пользоваться сервисами подписок.

Файлы:

  • subscrible.html - это форма для регистрации нового подписчика
  • subscrible.php - основной скрипт системы подписки
  • usersnot.txt - файл с электронными адресами подписчиков не прошедших до конца регистрацию
  • users.txt - подписчики, прошедшие регистрацию

Использование:

После того, как новый подписчик введет свой электронный адрес, ему будет отправлено письмо, в котором будет указана ссылка, по которой необходимо пройти, чтобы завершить регистрацию. Для входа в административную панель, необходимо в браузере загрузить subscrible.php. Если это первый вход, вам будет предложено создать файл с паролем и логином, пароль шифруется внутренним алгоритмом php md5, что исключает возможность расшифровки.

subscrible.html

<html>
 <body>
  <form action=subscrible.php method=post>
   <input type=text size=15 name=email>
   <input type=submit value="Подписаться">
  </form>
 </body>
</html>

subscrible.php

if ( isset ($id) ) {
$data = File ("users.txt");

for ($i=0;$i<count($data);$i++) {
 $dat = explode (":", $data[$i]);
 echo "<center><table border=1 bgcolor=lightblue>";
 echo "<tr><td><center>Email<td><center>Дата регистрации</tr>";
 echo "<tr><td><center>$dat[0]<td><center>$dat[1]</tr></table><br>";
}
 echo "<a href=\"subscrible.php\">Назад</a>";
 exit;
}

if ( isset ($text) && isset ($subject) ) {
if ($text == "" OR $subject == "") {
 echo "<b><center>Не указана тема или текст подписки !";
 echo "<p><a href=\"subscrible.php\">Назад</a>";
 exit;
}

$data = File ("users.txt");

for ($i=0;$i<count($data);$i++) {
 $dt = explode (":", $data[$i]);
 $to = $dt[0];
 $text = $text."\r\n\r\n\r\n --";
 mail ($to, $subject, $text);
 echo "<center>$to -> отправлено<br>";
}
 echo "Рассылка успешно отправлена, спасибо за использование системы";
 exit;
}

if ( isset ($login) && isset ($password)) {

if ( ! file_exists ("passwordad.txt") ) {
 $password = md5 ($password);
 $fp = fopen ("passwordad.txt", "w");
 fputs ($fp, "$login:$password");
 fclose ($fp);
 echo "<b><center><i>Вход для администратора подписок<p></i>";
 echo "Файл с паролем создан успешно !<p>";
 echo "<form action=subscrible.php method=post>";
 echo "<table border=0 bgcolor=lightblue>";
 echo "<tr><td>Login<td><input type=text size=15 name=login></tr>";
 echo "<tr><td>Password<td><input type=text size=15 name=password></tr>";
 echo "<tr><td colspan=2><center><input type=submit value=\"ВХОД\"></tr>";
 echo "</table>";
 exit;
}

$data = File ("passwordad.txt");
$dat = explode (":", $data[0]);
$password = md5 ("$password");
if ($dat[0] == "$login" && $dat[1] == "$password") {
 $data = File ("users.txt");
 echo "<b><center><h2>Административная панель</h2><p>";
 echo "Всего зарегистрировано подписчиков: ".count($data)."<p>";
 echo "<br><a href=\"subscrible.php?id=1\">Посмотреть всех подписчиков</a><br>";
if (count($data) == 0) {
 echo "<b><center>Не кому делать рассылку !";
 exit;
}
 echo "<form action=subscrible.php method=post>";
 echo "<input type=submit value=\"Разослать подписчикам\"<p>";
 echo "<p>Укажите тему, которая будет подставляться в письмо при отправке информации подписчикам<br>";
 echo "<p><input type=text size=20 name=subject>";
 echo "<p>Введите в текстовое поле текст Вашей рассылки (можно указывать html-теги)<br>";
 echo "<textarea name=text cols=85 rows=10></textarea>";
 echo "</form>";
 exit;
}

}

if ( ! isset ($email) && ! isset ($number) ) {
echo "<b><center><i>Вход для администратора подписок<p></i>";
 if ( ! file_exists ("passwordad.txt") ) { 
  echo "Вы входите первый раз, сейчас будет создан файл с Вашим логином и паролем"; 
 }

 echo "<form action=subscrible.php method=post>";
 echo "<table border=0 bgcolor=lightblue>";
 echo "<tr><td>Login<td><input type=text size=15 name=login></tr>";
 echo "<tr><td>Password<td><input type=text size=15 name=password></tr>";
 echo "<tr><td colspan=2><center><input type=submit value=\"ВХОД\"></tr>";
 echo "</table>";
 exit;
}

$data = File ("usersnot.txt");

if ( isset ($number) && isset ($email) ) {

for ($i=0;$i<count($data);$i++) {
$dat = explode (":", $data[$i]);
if ( $dat[0] == "$email" && $dat[1] == "$number\r\n") {
 $datemom = date ("d F", time());
 $fp = fopen ("users.txt", "a");
 fputs ($fp, "$email:$datemom\r\n");
 fclose ($fp);
 $fp = fopen ("usersnot.txt","w");

for ($f=0;$f<count($data);$f++) {
$da = explode (":", $data[$f]);
if ($da[0] == $email) { 
 $data[$f] = trim (""); 
 }
 fputs ($fp, $data[$f]."\r\n"); 
}
fclose ($fp);

 echo "<b><center>Спасибо за регистрацию !";
 exit;
 }
}
 echo "Не могу найти запись !";
 exit;
}

if ( isset ($email) ) {
 $email = substr ($email, 0, 50);
if ( ! stristr ($email, "@") ) {
 echo "<b><center>Указан неверный e-mail !";
 exit;
}
 $data = File ("users.txt");

for ($i=0;$i<count($data);$i++) {
 $dat = explode (":", $data[$i]);
if ($dat[0] == "$email") {
  echo "На этот адрес уже произведена подписка !";
  exit;
 }
}

$randomess = rand(99999999, 10000);
$site = "127.0.0.1/subscrible/subscrible.php";
$to = $email;
$subject = "Подтверждение подписки !";
$message = "Здравствуйте\r\nНа Ваш электронный адрес $email была произведена подписка с сайта $site\r\nДля подтверждения подписки пройдите по следующей ссылке: http://$site?email=$email&number=$randomess";
mail ($to, $subject, $message) or print ("Не могу отправить письмо !");
$fp = fopen ("usersnot.txt", "a");
fputs ($fp, "$email:$randomess\r\n");
fclose ($fp);
}

usersnot.txt, users.txt - пустые файлы.