2013-04-03 2 views
1

Привет, ребята, мне нужен совет.Страница Coldfusion 'thank you' позволяет обновлять неограниченное количество раз

Наш платежный шлюз отправляет обратно некоторые данные, когда заказ успешно отправлен, который включен в строку url.

Проблема только в том, что пользователи обновляют страницу и отправляют через кучу команд cfmail каждый раз, когда они обновляют страницу благодарности!

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

Ниже приведен пример URL-адреса, который формирует платежный шлюз после успешной транзакции.

http://www.ourwebsitename.com/ConfirmationPage.cfm?cartinfo=^XXXX^1&orderinfo=Customer^Name^Billing Name^Billing^Line^1^Town^Postcode^websitename^Order^Amount^&responsesitesecurity=SECUREHASHCODE&thisorderid=OURORDERID 

Что думают люди о защите этой страницы?

+0

Предположим, что они сделают это и напишут свою программу, чтобы справиться с этим. У Саймона есть несколько хороших предложений. –

ответ

5

Путь я обратился к этому в прошлом, чтобы сделать следующее

  1. На любой странице, которая отображается пользователю, попытайтесь не иметь какой-либо логики, что на самом деле ничего не делает. Дисплей логик только на страницах дисплея
  2. В конце процесса оформления заказа, отправить по электронной почте, а затем использовать <cflocation> для перенаправления на страницу подтверждения
  3. Добавьте чек-бит на сессию или что вы используете для отслеживания пользователь должен отметить, что письмо уже отправлено
  4. Если вы ДЕЙСТВИТЕЛЬНО не хотите, чтобы пользователи повторно отправляли письмо дважды, используйте <cflock> и убедитесь, что флаг, указанный в № 3, не был помечен внутри <cflock> (чтобы сделать что он не был отправлен процессом, который его заблокировал)

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

+0

Спасибо за помощь, я последовал за вашим советом следующим образом: SET flag для электронной почты отправлен в новый столбец Условие CFIF, чтобы узнать, отправлено ли электронное письмо Перенаправлено на страницу thankyou, используя javascript, передавая элементы формы заказа через на новую страницу, CFLOCATION не будет проходить через элементы формы ... Отсортировано сейчас, спасибо большое :-) – matthew

+0

С помощью cflocation вы можете передавать данные по URL-адресу, но если это система заказов, может быть чувствительна данные, поэтому хороший выбор. –

+0

Еще раз спасибо Matt – matthew

1

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