Як зробити підписку на сайті (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
- Структура бази даних