Я постараюсь быть максимально кратким о том, что я пытаюсь сделать:
Допустим, я отправляю сообщение через SMS & Электронная почта на 5000 контактов (но я хочу, чтобы это работало даже на 10 или 1.000.000, независимо от объема).
В этом сообщении я рекламирую такое событие, как, например, званый ужин в каком-то модном месте. Приглашаются все, кто получил это сообщение.
Каждое сообщение содержит URL, ссылающийся на целевую страницу, посвященную событию. Эта страница отзывчива, она открывается приятной картинкой + текст, базовая информация и форма PHP для ответа на приглашение.
Эта форма имеет несколько полей. В этом примере, скажем:
Ты идешь на вечеринку? (ответ на выбор: «Да» или «Нет, спасибо»).
Вас будут сопровождать? (ответ на выбор: «Только я» или «+1», «+2»).
Что-нибудь еще, что вы хотели бы сообщить нам? (свободное поле для ввода).
[ОТПРАВИТЬ]
Каждая URL-ссылка в отправленных сообщениях фактически является УНИКАЛЬНЫМ перенаправлением, каждое из которых принадлежит 1 из 5000 достигнутых контактов.
Каждый контакт получил свою ссылку в SMS и на электронную почту.
Все это означает, что в базе данных, которую я использую для отправки сообщений, каждому контакту присваивается перенаправление / короткий URL.
Таким образом, я очень хорошо знаю, кто даже только что открыл целевую страницу, без необходимости просить новичков заполнить какую-либо информацию.
Я просто знаю это, например:
Mr. Skywalker is http://website.com/dinnerparty/01
Ms. Organa is http://website.com/dinnerparty/02
Mr. Solo is http://website.com/dinnerparty/1138
Mr. Calrissian is http://website.com/dinnerparty/4469
And they all redirect to http://website.com/dinnerparty/
Пока все хорошо, правда ?!
Теперь вот сложная часть …
После того, как он подтвердил, что, если он обновит страницу, он больше не сможет отправить форму. Вместо этого он видит сообщение типа «Ваш ответ получен, спасибо!». Страница практически одинакова для всех в списке контактов, но, поскольку это ЕГО ссылка, отображается ЕГО форма.
Я знаю, что это можно сделать, потому что я сталкивался с такого рода процессами раньше. Я просто не знаю, как воспроизвести это! Я не программист, просто нуб, пытающийся учиться «сам».
До сих пор я думаю, что мне нужно как-то дать и идентифицировать каждую из 5000 форм, и я просто предполагаю, что информация о том, что «этот URL = эта форма» будет содержаться в URL, будет выглядеть примерно так:http://website.com/dinnerparty-356a192b7913b04c54574d18c28d46e6395428ab‘
Все это звонит в какой-нибудь колокол? Мои запросы пока (играю с ключевыми словами «PHP» & «URL») только что научил меня, как переносить информацию из контактной формы в содержимое другой страницы с массивом GET, но это не то, что мне нужно.
Так что, если у вас есть какие-либо подсказки, любые указания относительно того, как это реализовать, я был бы благодарен!
Спасибо за чтение, любая помощь будет высоко ценится!
PS: простите за плохой английский;)
Прежде всего, не используйте инкрементные идентификаторы. Это склонно к так называемой атаке с последовательным номером. Вместо этого используйте UUID. В противном случае гость может ввести следующий / предыдущий / случайный идентификатор и, возможно, RSVP для другого гостя. Это плохая новость для вас, но отличная для злоумышленника (они будут делать это для лулзов … это может стоить жертве больших $$$, таких как, например, покупка ненужных обедов). Увидеть https://www.youtube.com/watch?v=CgJudU_jlZ8 а также https://www.youtube.com/watch?v=gocwRvLhDf8 для некоторых хороших объяснений.
Во-вторых, вы должны поддерживать UUID в URL, например, http://website.com/guest/123e4567-e89b-12d3-a456-426655440000
— используя скрипт или что-то вроде .htaccess
Вы можете забрать UUID и передать его в один скрипт. Например:
RewriteEngine On
RewriteRule ^/guest/(.*)$ /my-form.php?id=$1 [L]
Оттуда, в вашем my-form.php, вы можете проверить, если $_GET['id']
существует, а затем проверяет его (существует ли он? был ли он ранее отправлен и т. д.). Если он проверяется, вы можете затем отобразить форму как обычно и опубликовать для себя (с UUID в URL, по-прежнему). При отправке вы снова подтверждаете идентификатор и обрабатываете отправку.
Затем, при последующих загрузках страницы, вы можете запретить повторную отправку формы … или, наоборот, разрешить пользователям редактировать свой ответ. Может быть, они больше не будут +2 … но вариант использования зависит от вас, некоторые RSVP не позволяют редактировать после даты X … так что имейте это в виду.
—
Теперь, чтобы обсудить массовые SMS / почтовые сервисы, вы бы хотели иметь базу данных пользователей уже. Для того, чтобы отправлять уникальные ссылки, вам просто нужно сделать то, что известно как «Слияние почты» (или теги слияния и т. Д.) … В основном, вы должны иметь URL в бюллетене / сообщении, например: http://website.com/guest/[guest_id]
и mailmerge заменит [guest_id]
с UUID в вашей базе данных.
Существует множество служб массовой рассылки почты / смс, поэтому мне не нужно их перечислять. Выберите тот, который имеет API и соответствует вашим требованиям.
Надеюсь это поможет. Удачи 🙂
Других решений пока нет …