Правильный способ реализовать функцию отказа от подписки

В настоящее время я использую PHPMailer для отправки электронной почты в список рассылки, однако я хочу создать функцию отказа от подписки, потому что я не могу с чистой совестью не предоставить эту возможность.

Единственная проблема, с которой я столкнулся, - это делать это безопасно. До сих пор я имел в виду добавить на свой веб-сайт href, который будет ссылаться на страницу типа http://example.com/[email protected], но с помощью этого метода любой может удалить любое письмо по своему усмотрению или удалить весь список рассылки. Не знаю, как обойти эту проблему. Моя база данных MySQL содержит только уникальный идентификатор электронной почты, который является просто их позицией в базе данных (первое добавленное электронное письмо имеет идентификатор 1, второе - идентификатор 2 и т. Д.) И столбец для самого адреса электронной почты.


person Marcelo    schedule 19.11.2015    source источник
comment
создать уникальный одноразовый токен (также зависит от прошедшего времени) и использовать этот токен для таргетинга на электронную почту пользователя в запросе / столбце. Есть много решений.   -  person Funk Forty Niner    schedule 19.11.2015
comment
этот вопрос и ответ, например, stackoverflow.com / questions / 17142935 / может даже быть дубликатом для этого вопроса и stackoverflow.com/questions/3387229/ и stackoverflow.com/questions/1240915/   -  person Funk Forty Niner    schedule 19.11.2015
comment
Лично мне нравится этот ответ stackoverflow.com/a/17143081, где вы можете спросить пользователя, щелкнув ссылку, его секретный ключ, который вам действительно стоит добавить в свою таблицу.   -  person Funk Forty Niner    schedule 19.11.2015
comment
Создайте еще один столбец в своей таблице и создайте уникальный токен для каждого электронного письма. Затем вы можете прикрепить этот токен к URL-адресу отказа от подписки вместе с электронным письмом.   -  person Rehmat    schedule 19.11.2015
comment
Для тех, кто случайно наткнулся на этот вопрос, к сведению: это не просто вопрос совести - это требуется Федеральной торговой комиссией: ftc.gov/tips-advice/business-center/guidance/   -  person Halogen    schedule 04.06.2016


Ответы (1)


Я бы сделал что-то вроде этого

http://example.com/[email protected]&token=XXXXXXXXXXXXXXX

$_GET["token"] = hash_hmac('sha256', $email.$email_id, $site_salt);

если токен действителен, то подпишитесь на процесс.

P.S. Я не уверен, почему вы, по моему мнению, получили отрицательный голос, потому что вы не осознавали, что по закону от вас требовали отказаться от подписки.

person hendr1x    schedule 19.11.2015
comment
Это действительно полезно, спасибо! У меня есть функция отписки, но она довольно неуклюжая (это просто письмо с темой отписки). - person Marcelo; 20.11.2015