2009-10-15 6 views
1

몇 가지 단계가 필요한 가입 양식이 있습니다.뒤로 가기 버튼

단계 중 하나에서 정보를 채우고 업로드 할 이미지를 선택합니다.

다음 단계에서는 애플리케이션 검토를 볼 수 있습니다.

다음에 일어날 일은 사용자가 마음에 들지 않는 것을 보는 경우 뒤로 버튼을 눌러 양식의 내용을 변경합니다. 그러나

: 그는 돌아갈 경우

1) 그는 양식 제출에 대한 그 브라우저 경고 메시지 중 하나를 얻을 수는

2), I는 파일 업로드 모듈이 다르게 동작 할 (어쩌면을 보여 업로드 한 이미지로 원하는 사람을 변경할 수 있음)

뒤로 버튼을 클릭하면 사용자가 볼 수있는 것을 더 잘 제어 할 수 있습니까?

추신. PHP (html, javascript, 뭐든간에 ...)를 사용하고 있습니다. 응용 프로그램 프로세스의 다른 부분에 대해서는 아약스 비헤이비어를 사용하여 실시간으로 수행하는 작업 (상자 확인 등)을 저장했습니다. 그래서 "계속"버튼을 일반 링크로 만들었습니다. 그러나 파일을 업로드하면이 프로세스가 더 어려워집니다.

답변

0

페이지가 게시 된 경우 발생하는 브라우저 경고에 대해 할 수있는 일이 많지는 않습니다. 상태를 처리하는 사용자에 대해 별도의 뒤로 단추 (마법사 스타일)를 제공합니다. 브라우저의 뒤로 버튼을 사용하고 브라우저 경고를 무시하면 세션 변수 나 쿠키 등을 사용하여 사용자의 마지막으로 알려진 상태를 추적 할 수 있습니다.

+0

, 나는 그것이 서버에서 내 페이지를 검색합니다 생각하지 않는, 그냥, 마지막 브라우저는 것 같아 표시 할 수 있습니다 권리? –

+0

@nute : 실제로는 사용하는 캐시 제어 헤더에 크게 좌우됩니다. 페이지를 캐시하지 않도록 브라우저에 지시하면 대개는 그렇지 않습니다. – Shog9

2

"상태"를 인식 할 수 있도록 양식의 각 단계를 코드화해야한다는 것을 인식해야합니다. 세션 변수에서 각 단계를 추적하고 "세부 정보 확인"단계 이후에 데이터를 커밋 (db 에서처럼)하는 매우 유사한 사운드 형식을 수행했습니다.

관심이 있으시면 an example here을 볼 수 있습니다. 이 양식에서 파일 업로드 부분은 '스폰서 십 세부 사항'단계에서 발생합니다. 이 양식은 Javascript와 함께 또는 Javascript없이 작동하도록 설계되었습니다. 마지막 단계까지 아무 것도 전송되거나 저장되지 않으므로 자유롭게 놀 수 있습니다. 일부 샘플 파일을 업로드 한 다음 다시 돌아가서 어떤 일이 발생하는지 확인하십시오.

P. 세션 변수를 사용하여 각 단계를 추적하는 장점은 $ _SESSION 배열을 직렬화하고 데이터베이스 필드에 저장하는 것만 큼 간단하게 양식을 저장하고 다시 등록하는 것입니다. 그는 양식 제출에 대한 그 브라우저 경고 메시지 중 하나를 얻을 수 있습니다

1

1)

참조 : 그가 돌아갈 경우 Post/Redirect/Get

2), I는 파일 업로드 모듈을 원하는 다르게 행동 할 수 있습니다 (업로드 한 이미지를 표시하여 원하는 이미지를 변경할 수 있음)

참조 : da5id's answer.

+0

+1 메타 응답 : – da5id

1

포인트 1)에 대해 : Post/Redirect/Get 패턴을 사용하십시오. 이 패턴은 간단하면서도 효과적입니다. 사용자가 양식을 POST 한 후 GET 요청을 사용하여 양식을 다음 페이지로 재 지정하십시오. (테스트되지 않은)이 같은

뭔가 : 그들은 뒤로 버튼을 사용한다면

<?php 

    // let's say you determine the current step in the wizard with a GET parameter 
    $step = isset($_GET[ 'step' ]) ? intval($_GET[ 'step' ]) : 1; 

    if('post' == strtolower($_SERVER[ 'REQUEST_METHOD' ])) 
    { 
     // we have a POSTed form submission 

     /* 
      handle form submission 
     */ 

     if($success) 
     { 
      // successful form submission, so increment step 
      $step += 1; 
     } 
     else 
     { 
      // NON-successful form submission 
      /* 
       maybe save some error messages in a SESSION 
      */ 
     } 

     /* 
      complete the POST/REDIRECT/GET pattern 

      redirect to the desired step in the wizard process with a GET request, 
      this prevents re-submission by browser refreshes and backbuttons 
     */ 
     header('Location: http://example.com/yourformwizard?step=' . $step); 
    }