Контроль доступа для пробной подписки

Мне было поручено создать систему, которая позволит кому-то в нашей компании отправить электронное письмо со ссылкой на файл pdf, который будет храниться на нашем веб-сервере. Получатель может перейти по ссылке, чтобы просмотреть информационный бюллетень, который мы обычно продаем. Идея заключается в том, что мы делаем это в течение трех месяцев, а затем посмотрим, хотели бы они продолжить и оплатить полную подписку.

У меня есть часть регистрации, но я пытаюсь найти лучшее решение для отправки электронной почты. Вот что я подумал, но мне интересно, есть ли у кого-нибудь что-то лучшее.

1) При отправке по электронной почте сгенерируйте общий код, который добавляется к URL-адресу. Использование будет следовать за URL-адресом, и он проверит нашу БД для записей «ok» и передаст / не сможет их получить. Это выглядит нормально, но ссылка может быть передана или даже загружена на общедоступный сайт, где любой может получить доступ.

2) Чтобы расширить вышеизложенное, я подумал, что, возможно, у меня будет «одноразовый клик», где, когда я узнаю, что ссылка была нажата, срок ее действия может истечь, поэтому последующие клики не срабатывают. Недостатком является то, что если они нажмут, чтобы просмотреть и закрыть окно, они будут выполнены. Аналогично, если они щелкнут и их компьютер сработает, прежде чем загрузка завершится, они также будут заблокированы. Я не знаю, есть ли способ (в PHP для меня), чтобы подтвердить, что загрузка файла завершена …

3) Я могу поместить файлы в каталог, например /trials/201009/r@nDomstr1n6.pdf, где файл загружен, а имя ссылки случайное, поэтому было бы трудно догадаться. Тогда я мог бы использовать .htaccess для защиты папки каждого месяца с другим паролем. Это может стать утомительным и скорее всего будет раздражать пользователей.

Мы не хотим заставлять их управлять своими паролями b / c, требующими входа в систему и помнить, что еще одна учетная запись может препятствовать участию.

Спасибо за любые идеи или указатели. D.

Я бы сказал, сделайте это со случайным кодом для аутентификации на адрес электронной почты и истечет через 5 дней. Если вы ограничиваете доступ к ip, который впервые попал в хеш-код URL-адреса, это тоже могло бы работать, но могло бы знакомиться с законными пользователями / клиентами.

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

Наконец, подумайте, что если им понравится pdf и вы захотите поделиться им, они, возможно, просто сразу поделится с самим PDF-файлом и не потрудились бы со ссылкой.

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

Тем не менее, если вы хотите сделать это немного сложнее, вы можете сделать вариант своего предложения №2, в котором вы устанавливаете временную задержку какого-либо вида до истечения срока действия ссылки после ее нажатия. Вы также можете ограничить количество раз, когда ссылка будет обслуживать файл. Поскольку у людей много разных скоростей соединения, и потому, что я не знаю, насколько велики ваши PDF-файлы, я не могу точно сказать, какая должна быть временная задержка, если вы решите ее использовать.

Как я уже сказал, если кто-то решит поделиться файлом, они могут легко это сделать.

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

Таким образом, пользователь щелкнет ссылку http://www.yourdomain.com/download_pdf.php?email=person@test.com.

Сохраните таблицу со следующими данными для адресов электронной почты.

id email_addr read_date expire_date

Когда они нажимают на ссылку, чтобы проверить, не прочитали ли они ее раньше, и если у них есть проверка, она не истекла. Если это не так, обратитесь к ним в формате pdf, если он предоставит им страницу, в которой говорится: «Извините, срок действия вашего истекли ../»

Если его первый раз щелкнул по нему, установите значение read_date и вычислите дату истечения срока действия и установите это.

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

Вы также можете настроить столбец загрузки в таблице и не загружать его более двадцати раз или что-то, увеличивая столбец загрузки каждый раз, когда они нажимают на ссылку.