Як зробити підписку на сайті (v2)
Я вже писав колись дуже давно статтю по створенню підписки на сайті, проте, за цей час я вже розробив більш простий і зручний механізм реалізації підписки на сайті, і давайте його розберемо.
Так само як і в минулій версії у Вас повинна бути таблиця до статей або постами на блозі. Так само у Вас повинна бути таблиця передплатників на оновлення і таблиця з чергою розсилки.
Відео: Як зробити Rss підписку на сайті Wordpress
Таблиця зі статтями (articles):
- id - унікальний ідентифікатор.
- title - заголовок статті.
- text - текст статті.
Таблиця з передплатниками (subscribers):
- id - унікальний ідентифікатор.
- email - e-mail передплатника.
Таблиця з чергою розсилки (turn):
- id - унікальний ідентифікатор.
- email - e-mail передплатника, якому потрібно відправити повідомлення. Замість нього можна використовувати subscriber_id, але з метою спрощення розуміння, візьмемо найпростіший варіант.
- article_id - унікальний ідентифікатор тієї статті, за якою потрібно відправити повідомлення
- is_send - відправлено лист чи ні.
розберемо код 1-го скрипта, який відповідає за додавання передплатників в чергу розсилки:
lt ;?php
$ mysqli =new mysqli("Localhost","Root","","Mydb") -// Підключаємося до бази
$ rs = $ mysqli-gt;query("SELECT MAX (` article_id`) as `max` FROM` turn` ") -// Дізнаємося id останньої відправленої статті
$ row = $ rs-gt;fetch_assoc() -
$ last_article_id = $ row["Max"] -
$ rs = $ mysqli-gt;query("SELECT` id` FROM `articles` WHERE` id` gt; `$ Last_article_id` ") -// Беремо все нові статті (тобто ті, які ще не відправлені)
$ rs_subscribers = $ mysqli-gt;query("SELECT * FROM` subscribers` ") -// Отримуємо всіх передплатників
while(($ row = $ rs-gt;fetch_assoc())!=false){
/ * Перебір нових статей * /
$ article_id = $ row["Id"] -
while(($ row_subscribers = $ rs_subscribers-gt;fetch_assoc())!=false){
/ * Перебір передплатників * /
$ mysqli-gt;query("INSERT INTO` turn` ( `email`,` article_id`, `is_send`) VALUES ( `".$ row_subscribers["Email"]." `,` $ Article_id `,` 0 `)") -// Додаємо в чергу розсилки кожного передплатника
}
}
$ mysqli-gt;close() -
?gt;Тепер розглянемо код 2-го скрипта, який відповідає за безпосередню відправку:
Відео: Як зробити кнопку підписатися
lt ;?php
$ mysqli =new mysqli("Localhost","Root","","Mydb") -// Підключаємося до бази
$ rs = $ mysqli-gt;query("SELECT * FROM` subscribers` WHERE `is_send` = `0` ORDER BY` id` LIMIT 10 ") -// Беремо 10 передплатників, яким ще не відправлено лист
while(($ row = $ rs-gt;fetch_assoc())!=false){
$ rs_article = $ mysqli-gt;query("SELECT * FROM` articles` WHERE `id` = `".$ row["Article_id"]." `") -// Беремо інформацію про статті
$ row_article = $ rs_article-gt;fetch_assoc() -
$ success = mail($ row["Email"], $ row_article["Title"],"З`явилася нова стаття ...") -// Відправляємо e-mail
if($ success) $ mysqli-gt;query("UPDATE` turn` SET `is_send` = `1` WHERE` id` = ` ".$ row["Id"]." `") -// Якщо e-mail відправлений, то ставимо is_send = 1, який повідомляє про те, що передплатнику відправлено лист
}
$ mysqli-gt;close() -
?gt;Тепер найголовніше - сенс алгоритму. Скрипт запускається автоматично через cron, аналізує появу нових статей і додає відразу ж в чергу розсилки всіх передплатників. Далі інший автоматичний скрипт просто бере всіх тих, кому ще не відправлено лист і відправляє його.
На мій погляд, даний алгоритм набагато ясніше і простіше для розуміння, ніж той, про який я писав раніше. Відразу кажу, код сирої, так само він не протестований, тому в ньому можливі помилки. Але алгоритм абсолютно вірний, він зрозумілий і він робочий, тому користуйтеся при створення підписки на своєму сайті.
Logoff - завершення сеансу користувача windows.
K- @ mail pro
Як правильно створювати структуру бази даних
Як створити голосування на сайті
Як стати передплатником блогу temowind.ru?
Як зробити парсер контенту на php
Як зробити коментування на сайті
Як зробити тестування на сайті
Реалізація хто онлайн
Статистика відвідувань на php
Створення тригерів в mysql
Одноразова авторизація по посиланню
Реалізація пошуку на сайті через php
Group by в sql
Відправка sms на сайті
Оператор between в sql.
Фільтр пошуку на php
Різниця між cookie і сесіями
Захист e-mail на сайті від спамерів
Join в sql
Структура бази даних
Фільтр пошуку на php
Структура бази даних
Захист e-mail на сайті від спамерів
Реалізація пошуку на сайті через php
Як зробити коментування на сайті
Створення тригерів в mysql
Як правильно створювати структуру бази даних
Group by в sql
Як створити голосування на сайті