2012-02-25 3 views
0

У меня есть письмо, содержащее ссылки на различные продукты, которые я отправил потенциальным клиентам. Когда вы нажимаете на ссылку, я хочу взять пользователя на страницу с формой на ней. Исходя из того, какую ссылку на продукт они нажали, я хочу, чтобы значение скрытого поля ввода равнялось имени продукта.Запуск PHP-сессии по электронной почте

Я также хочу, чтобы страница была доступна только по ссылке в электронном письме.

Как бы я это сделал?

+4

Невозможно, чтобы ваш сервер мог определить, действительно ли нажата ссылка из электронной почты. Любой может ввести ссылку и получить доступ к той же странице. – animuson

ответ

2

Ссылка в сообщении электронной почты может быть что-то вроде

http://example.com/my-script.php?email=<email_address>&token=<token> 

где значение <token> вычисляется скриптом (в секретном пути) на основе адреса электронной почты; Затем на my-script.php проверьте правильность полученного значения токена (путем повторного вычисления маркера с адреса электронной почты и сравнения двух).

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

+0

электронной почты может быть хэш электронной почты, что делает его более безопасным. –

2

Ваша первая проблема довольно проста. Вы просто использовать параметр из URL ($ _GET [ «pruduct_name»]) и поместить его в поле значение вашего скрытого ввода, как:

<input type="hidden" value="<?php echo $_GET['product_name']; ?>" /> 

Это будет довольно трудно сделать URL доступны только через электронной почты.

1

Когда вы отправляете электронное письмо, вы можете сгенерировать произвольную буквенно-цифровую последовательность, которую вы добавляете к строке запроса URL yourdomain.com/page.php?id=sdlasjh234897dhaksjhda и сохраняете в своей базе данных, а также с каким продуктом она связана.

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

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