2015-03-12 3 views
0

Мой сайт содержит простую форму с запросом только на электронную почту. Когда пользователь отправляет форму, они отправляются по электронной почте по электронной почте с подтверждением, чтобы нажать «подтвердить подписку».Как сделать определенную страницу html доступной только по ссылке подтверждения?

Это делается с помощью MailChimp. Как только они нажимают «подтвердить», они перенаправляются на мою страницу с благодарностью. Однако на этой странице есть обычный URL-адрес, поэтому он доступен, просто набрав его в вашем браузере. Вместо этого я бы хотел, чтобы эта страница благодарности была доступна только в том случае, если она открывается с помощью кнопки подтверждения MailChimp в своем почтовом клиенте.

Возможно, есть способ использовать файлы cookie для проверки того, что пользователь перенаправляется через MailChimp?

Можете ли вы предложить несколько советов, как это сделать?

Большое спасибо!

ответ

0

Да, куки были бы одним из методов подхода для этого. На перенаправленной странице вы можете обработать флаг, чтобы пометить пользователя как «Проверено», а затем использовать этот файл cookie для отображения дополнительных данных. Это было бы достигнуто путем использования одной из переменных $ _GET и обработки чего-либо из формы. Вы всегда можете сделать это через скрытое поле формы. С mailchimp я знаю, что у них обычно есть метод отправки обратно обработанных данных формы. Вы также можете использовать супер-глобальный $ _SESSION. Еще одним способом было бы сохранить флаг в записи базы данных пользователей, если они вошли в систему, но, очевидно, это будет работать только в этих условиях.

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

Да, я говорил о вашем сайте. Альтернативой всей системе входа в систему должно быть захват их IP-адресов, их сохранение в таблице БД при их проверке, а затем проверка при принятии решения о том, показывать ли дополнительный контент. Это само по себе может привести к поражению производительности, особенно по мере роста вашей пользовательской базы.

Однако вы можете использовать это в сочетании с куки-файлами или $ _SESSION, чтобы по существу имитировать их, чтобы они вошли в систему так, чтобы говорить. Затем, когда у вас есть свой набор $ _SESSION, вы можете проверить это на последовательных нагрузках, а не на попадание в базу данных. Это в основном то, как традиционные системы входа в систему обрабатываются в любом случае, мы просто уничтожаем требование входа в систему и вместо этого используем свой IP-адрес.

+0

Спасибо Hybrid. Я определенно предпочел бы использовать надежный метод, но я смущен тем, как я буду хранить флаг в записи базы данных пользователей. Вы говорите о том, чтобы что-то делать в MailChimp? Или вы предлагаете добавить функцию участника на свой сайт. Это похоже на большую задачу для такого простого требования ... – Nova

1

Вы можете рассмотреть возможность использования страницы .htaccess.

Options -Indexes 
RewriteEngine On 
RewriteCond %{HTTP_REFERER} !^[URL]/.*$ [NC] 
RewriteRule ^.* /403.html [L,R] 

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

+0

Это кажется многообещающим спасибо! Но у меня есть несколько вопросов. 1) Я бы просто заменил /403.html базовым URL-адресом MailChimp? 2) Эффективно ли это от мобильных устройств? Мне нужно, чтобы это было надежным для этого и без файлов cookie, и т. Д. 3) Как определить базовый URL MailChimp? Разве это не просто mailchimp.com? Благодаря!! – Nova

+0

1) Вы можете это сделать - или вы можете перенаправить на другую страницу на своем веб-сервере. 2) Если у вас есть образец электронной почты от mailchimp, который содержит кнопку подтверждения, я бы использовал базовый URL-адрес. Это происходит только потому, что иногда сайты используют субдомены для определенных функций. Это для всего трафика на вашем сайте, поэтому да, он работает на мобильных устройствах. –

+0

Если я заменил /403.html своей пользовательской страницей благодарности, то где я могу ввести базовый URL MailChimp? Он заменяет HTTP_REFERER следующим образом: RewriteCond% {www.mailchimpsBaseURL}!^[URL] /.*$ [NC] – Nova

0

Я использую аналогичную настройку для страницы создания свинца. HTML-форму POSTS (используя jQuery ajax) страницу MailChimp, которая отправляет пользователям ссылку для проверки в электронном письме. На моей странице ведущего поколения у меня есть «скрытый» div, показывающий сообщение благодарности. На успешной почте через ajax я просто спрячу div, содержащий регистрационную форму, и покажу сообщение div с сообщением об успешном завершении.

Поскольку сообщение с успешным сообщением по умолчанию скрыто, оно не будет отображаться, если пользователь не отправит регистрационную форму.

В этом случае я не буду рекомендовать использование файлов cookie.Что делать, если пользователь открывает ссылку подтверждения на другом браузере или компьютере?

+0

Спасибо Tej, вы можете как-то поделиться своим решением или предложить какой-то пример? Кроме того, я не знаю, будет ли ваше решение работать для меня, так как кажется, что ваше сообщение о успехе появляется до того, как они нажали «подтвердить» в своем письме? Это означает, что в моей ситуации они могли вводить ключевые слова (на странице успеха) и представлять, прежде чем они даже подтвердили свою регистрацию. Возможно, я ошибаюсь – Nova

+0

Вы правы в своем предположении. В вашем случае вы можете: 1) Настроить успешное сообщение в самом MailChimp. 2) Настройте в MailChimp перенаправление на страницу успеха и передайте GUID в параметре строки запроса. Если параметр GUID недоступен в URL-адресе или не соответствует, перенаправите пользователя на страницу регистрации. – TejSoft

Смежные вопросы