За последние 24 часа нас посетили 52002 программиста и 1767 роботов. Сейчас ищут 794 программиста ...

Создание подписки на новый контент на сайте

Тема в разделе "PHP для новичков", создана пользователем zevilz, 25 апр 2012.

  1. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Есть сайт с видеоуроками и форумом. Видеоуроки добавляются через админку методом POST. Необходимо сделать рассылку тем, кто подписан при добавлении нового видео в админке. Хочу добавить чекбокс для подписки при регистрации нового пользователя и еще один в личном разделе для включения/отключения подписки. Также хочу добавить всплывающее окно с предложением подписки для тех, кто не подписан или отключил подписку, включая и тех кто вообще не зарегистрирован. Хотел сделать новое поле в таблице пользователей о состоянии подписки (0 - неподписан, 1 - подписан, новости будут идти на указанный пользователем при регистрации email), но подумал, а как же подпишутся гости (может кто не хочет регистрироваться, а хочет знать о добавлении нового контента). Для этого нужно будет создать еще одну таблицу, причем после подписки гостя окно будет вылезать опять. И что вообще случится, если вдруг подписанный гость, решит зарегистрироваться понятия не имею. Как вообще правильнее будет это организовать? Заранее спасибо за ответы.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    гостям не надо рассылать. надо чтобы регались, подтверждали мыло, а потом рассылать. А то на тебя пойдут жалобы и в спамлист.
     
  3. FalkoN

    FalkoN Активный пользователь

    С нами с:
    1 апр 2011
    Сообщения:
    184
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Да ничего не случится, надо просто при регистрации нового юзера удалять его мыло в таблице подписавшихся гостей, если есть.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    у тебя в таблице пользователей есть какой-нибудь атрибут типа "группа"? можешь завести группу "неактивированные" или типа того. когда анонимный посетитель ввел свой email для подписки, заводи ему учетку типа "неактивированный". с точки зрения модуля рассылки он будет просто пользователем, с возможностью вкл/выкл рассылку по кодовой ссылке.
     
  5. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Я хочу сделать не очень назойливую форму подписки, которая будет фиксирована внизу экрана. Просто если подписка будет не доступна гостям, возможно потерять большое количество подписчиков, т.к. некоторым будет не нужна регистрация, но захотят получать по почте оповещения о новых видеоуроках. Я тут подумал, если сделать для подписчиков отдельную таблицу с колонками id и email. При регистрации если будет отмечен чекбокс подписки при нажатии на кнопку зарегистрироваться введенный email занесется в таблицу. При следующем входе на сайт будет проверяться нет ли адреса пользователя в новой таблице. Если нет, то вылезет форма подписки. Если на сайт заходит гость, то форма появляется в любом случае, но для приличия добавить кнопку типа уже подписан. Как вам такая мысль? Вот только не знаю, как сделать чтобы форма подписки для неподписанных на нее вылезала только при первом входе на сайт, а не каждый раз например при обновлении страницы или при переходе на другую. Можно ли это сделать при помощи php или придется повозиться с jquery?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тогда гостям подписка с подтверждением. т.е. сначала приходит письмо хотите мол, а потом уже если хочет - рассылка.
     
  7. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    А зачем с подтверждением? Я хочу сделать для гостей маленькую форму с полем для ввода email и подтверждением. Если пользователь ввел свой email и нажал на кнопку, то он уже согласен на рассылку. Для пользователей я думаю будет достаточно в форме вывести только кнопку, email сам подставится из базы
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    затем чтобы нельзя было туда вписать чужой имеил
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    вот — это важное замечание. первое письмо должно быть примерно таким:
    "Кто-то, возможно Вы, подписал этот email на получинеие новостей с …
    Если это ошибка, просто игнорируйте это письмо. Если Вы действительно хотите получать новости, пройдите по ссылке
    http_://blablabla.com/eprst.php?id=8272387381273287238847834"

    Иначе какой-нибудь шутник забомбит приятеля и это закончится попаданием в спам-листы.
     
  10. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Смысл понял. Я даже и не задумывался об этом. Спасибо за мыслю. И еще вопрос. Как правильнее вывести все емейлы подписчиков в скрипте отправки сообщения, через implode или цикл?
     
  11. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Куда вывести? Зачем вывести? В зависимости от этого - могут быть разные варианты ответов :)
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    никак нельзя! каждому личное сообщение. иначе они увидят чужие мыльники и дадут тебе за это по лицу.
     
  13. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Может он себе в админке хочет их вывести?
    Или, например, под словом "вывести" понимает выбрать их все из б.д. и отправить на них ту самую рассылку :)
     
  14. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    разошлем ваш емайл по нашей базе адресов
     
  15. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    у меня на сайте при отправке любого комментария обработчик посылает мне уведомление на почту при помощи скрипта на php. А я хотел примерно такой же скрипт приделать в обработчик добавления видеоурока и засунуть туда в получателя все адреса из таблицы подписчиков. Разве это поле будет видно всем? Вы имеете ввиду, что необходимо в цикле отправлять сообщения каждому из подписчиков?
     
  16. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Да, каждому отдельно. Иначе они будут видеть адреса друг друга в своих почтовых программах - в поле кому они все будут перечислены.
     
  17. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Понятно. Попробую)
     
  18. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Все работает, но пока только без подтверждения на почту для гостей. Вот только еще один вопрос возник. Чтобы пользователь подтвердил подписку, как я понимаю, я должен сделать ссылку, по которой передается email методом GET. В моем случае будет вот такая ссылка:
    Код (Text):
    1. profile.php?section=subscribe&id=1&action=subscribe&email=blabla@blabla.net
    Использование такой ссылки может повлечь к хреновым последствиям. Можно будет подписываться через адресную строку сколько угодно и без разницы на чьи емейлы. Как защититься от таких последствий? Предполагаю, что email нужно как то шифровать. Только как?
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    сгенери рандомную последовательность. заведи отдельную таблицу по это: мыло и рандом.
     
  20. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    есть движки, где для подтверждений в таблице users заведено специальное поле activation_key. это не слишком накладно.
     
  21. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Добавил в таблицу подписчиков колонку для зашифрованных емейлов и еще одну для статуса подписки. Пользователь вводит свой емейл, скрипт шифрует емейл
    Код (Text):
    1. $email = crypt($email,346346);
    заносит результат вместе с емейлом в таблицу и отправляет письмо юзеру на почту в виде
    Код (Text):
    1. http://my.site/profile.php?section=subscribe&id=1&action=subscribe&key=3sg23564Iifx.UaWEF2
    Пользователь жмет на ссылку и попадет на страницу, где из базы достается строка, где ключ равен ключу в ссылке. Если запрос проходит, то в колонку статуса уходит "1", т.е. емейл активен.
    Всем спасибо за помощь:)
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    можно просто рандом сгенерить
     
  23. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Рандом тоже вариант. А есть вариант сделать скрипт удаления строки, в которой status=0, через определенный промежуток времени, чтобы не захламлять базу емейлами, которые неправильно введены? Или выгоднее будет оставить так, т.к. придется добавлять еще один столбец в таблицу с датой подписки?
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    cron и выборка
     
  25. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    А по подробней, пожалуйста.