2012-10-12 4 views
3

웹 사이트에서 wizard을 구현하고 싶습니다. 그것은 일련의 양식처럼 보일 것입니다.웹 사이트에서 마법사를 수행하는 방법은 무엇입니까?

내 요구 사항은 다음과 같습니다

  • 사용자는 (앞뒤로 갈 때) 양식을 다시 제출하라는 메시지가 표시되지 않고 전후, 브라우저 버튼을 사용할 수 있어야합니다.
  • 사용자가 이전에 채워진 페이지로 이동하는 경우 필드는 자동 완성되어야합니다.
  • 사용자가 이전 단계를 완료하지 않고 페이지에 액세스하려고하면 그에 따라 리디렉션되어야합니다 (마지막으로 필요한 페이지).
  • 사용자는 떠난 후 다시 돌아와서 양식 완성을 재개 할 수 있어야합니다.
  • 내 모델에서 각 페이지는 이전 페이지를 채울 것을 요구했습니다. 그리고 각 페이지마다 고유 한 유효성 검사가 있습니다.
  • URL이 꽤 있어야합니다.
  • 마법사는 자바 스크립트없이 작동해야합니다 (필수 아님).

어떻게 구현합니까?

내가 세션의 모든 정보를 저장하기 위해 계획하고 마법사의 끝에서 저장 :


Toughts는 (? HTTP 포스트 형태의 시리즈, HTTP GET 형태, 자바 스크립트 여부를 통해 제출) 정보를 데이터베이스에 저장하고 현재 세션 정보를 지 웁니다. 이렇게하면 필드를 자동 완성하고 사용자가 마법사를 완료 한 위치를 알 수 있습니다.

내 주요 관심사 :

  • 내가 HTTP 게시물 형태로 구현하는 경우, 브라우저는 각 양식을 다시 제출하라는 메시지를 표시합니다 (그리고 나는 그 제어 확보하는 방법을 모른다) 내가 구현하는 경우
  • 을 http GET 양식을 사용하면 URL이 정보로 채워지고 길어질 수 있습니다. 그리고 그것은 GET 요청의 수단이 아닙니다.
  • javascript를 통해 http 포스트를 통해 각 양식을 제출하면 프롬프트가 표시되지 않지만 내 마법사는 javascript와 작동하지 않습니다 (어쩌면 해결책은 기본 양식 동작을 재정의하여 javacript 없이도 작동하도록하는 것입니다)
+2

왜 단일 양식 내에서 jQuery 탭 (다중 단계 마법사 프로세스처럼 보이게 지정)을 사용하지 않는 것이 좋을까요? – Kane

+0

@ 케인 좋은 생각. 그러나 각 단계의 유효성 검사 (관련 필드 만 제출)에 필요한 javascript가 필요하며 no-javascript 대체는 거대한 형태가 될 것입니다. –

+0

공개 웹 사이트에서 원하는 마법사를 전시 할 수 있습니까? –

답변

-1

마법사의 다른 페이지 사이에 채워진 데이터를 저장하기 위해 PHP 세션 변수를 사용합니다. html 폼을 사용하면 브라우저 기록을 통해 돌아 가면 데이터를 다시 보내라는 메시지가 표시됩니다.이 문제를 해결할 수있는 방법을 모르겠습니다 ... PHP를 사용하여 변수를 저장하는 것은 쉽습니다. 양식을 method=post으로 지정하고 $_REQUEST 명령을 사용하십시오 GET을 사용하지 않으려면 PHP 문서의 정보를 검색하십시오. 행운을 빌며, 내가 생각하면 갱신 될 것이다.

+0

또한 javascript를 사용하여 폼을 검증하지만 위와 같이 PHP에 저장합니다. –

+0

임의의 데이터 저장을 위해 세션을 사용하지 않는 것이 좋습니다! 그렇게하면 성가신 속도가 빨라지고 로그인 인증을 위해 세션을 사용하게되면 보안 모델이 엉망이됩니다. 설정을 설정 데이터와 별도로 유지하고 설정을위한 테이블을 만들거나 localStorage를 사용하십시오! – Kzqai

0

임의의 데이터 저장을 위해 세션을 사용하지 마십시오! 그렇게하면 성가신 속도가 빨라지고 로그인 인증을 위해 세션을 사용하게되면 보안 모델이 엉망이됩니다. 귀하의 설정을 설정 데이터와 별도로 유지하고 설정을 위해 특별히 테이블을 만들거나 javascript localStorage!

귀하의 경우, 영구 저장 장치가 추가되어 여러 양식 섹션에서 표시/숨기기 기능을 가진 하나의 긴 양식이 마음에 들었습니다.즉

, 대신 자바 스크립트없이 사용자의

form_section_1 > validate, save data, and then display form_section_2 and hide form_section_1 > validate, save data, and then display form_section_3 and hide form_section_2 > etc > true form submit once

form1 > form2 > form3 > form4 > done, 그냥 섹션의의 제출에 모든 섹션을 통해 PHP에서 자신의 정보를 확인합니다. 가장자리의 경우에도 실제로 저장하려는 경우 session_id로 식별되는 정보를 설정 테이블에 저장할 수 있습니다.

이 시나리오에서는 간단히하기 위해 localStorage를 사용하여 모든 유효성 검사에 대한 모든 데이터를 저장하고 실수로 기본 폼을 벗어나지 않도록 javascript를 사용합니다. ie7 (http://caniuse.com/#search=localStorage)과 같이 지원하여 삶을 복잡하게해야한다면 localStorage를 찾아서 부재중에 데이터를 PHP 스크립트에 전달하면 단일 데이터 컨테이너 객체에 넣을 수 있습니다. json의 단일 번들을 세션의 단일 변수에 저장하거나 더 나은 데이터베이스의 설정 테이블에 저장합니다.

관련 문제