2015-09-01 4 views
0

Я ищу здесь совет. Я поставил вопрос раньше Disable submit button.Coldfusion form submit disable submit button

  1. У меня есть форма, которая представляет в себе и выглядит Лик ниже

    <cfif isdefined(form.submit)> 
        thank you for taking the test 
    <cfelse> 
        Actual form with radio buttons, ques, ans 
    </cfif> 
    
  2. После теперь, когда пользователь берет тест и хитов представить и на благодарности части формы. В этот момент, если он отбросит кнопку в браузере, он все еще видит форму.

  3. У меня есть проверки на стороне сервера на месте, где, если он обновит форму, он снова будет отправлен на страницу благодарности.

  4. Я попытался отключить кнопку отправки, но это не всегда работает во всех браузерах.
  5. Может кто-нибудь, пожалуйста, скажите мне, что мне лучше всего делать в этом случае.
  6. Должен ли я делать history.forward(); на странице? так что когда пользователь удаляет кнопку браузера, он все равно остается на одной странице.
  7. Или я должен очистить кеш таким образом, чтобы, когда пользователь нажимает кнопку, он не видит форму, а просто остается на странице благодарности.

    <cfoutput> 
        <cfheader name="expires" value="#now()#"> 
        <cfheader name="pragma" value="no-cache"> 
        <cfheader name="cache-control" value="no-cache, no-store, must-revalidate"> 
    </cfoutput> 
    
  8. Или есть что-то недостающее, и эти выше просто хаки и не должны быть выполнены. Ваши ответы очень приветствуются. заранее спасибо.
+1

Я предлагаю экспериментировать с 6 и 7. –

ответ

2

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

<cfif structKeyExists(form,"submit") or structKeyExists(session, "completed")> 
    <cfif !structKeyExists(session, "completed")> 
     <!--- do validation etc here, if all good then ---> 
     <cflock scope="session" timeout="5"> 
      <cfset session.completed = true> 
     </cflock> 
    </cfif> 
    thank you for taking the test 
<cfelse> 
    Actual form with radio buttons, ques, ans 
</cfif> 

В качестве альтернативы вы можете сделать это с помощью куки (cfcookie) вместо использования сеанса.

+0

спасибо за ввод. Я делаю что-то вроде выше, но это не мешает пользователю НЕ видеть форму, когда он нажимает кнопку назад браузера ... – user747291

+0

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

+0

Это относится только к запросу страницы. Использование браузера для возврата не вызывает запроса страницы. –