2010-08-23 5 views
2

사용자 프로필 양식을 작성했습니다. 긴 양식은 매우 복잡합니다. 사용자가 제출하고 저장하기 전에 양식의 유효성을 검사해야합니다. 여기 php - 임시 양식 데이터 저장 방법

질문입니다 :

형태가 DB에 저장되고, 관련된 여러 테이블이 있습니다. 이제 내부적으로 양식의 유효성을 검사하지 않고 사용자가 입력 한 내용을 저장하는 "양식 저장"기능을 소개하고자합니다.

과 같은 잠재적 인 문제가있다 : 어떻게 임시 데이터를 저장하는

Q1은>?

Q2> 임시 데이터 을 양식을 제출하지 않고 저장 한 다음 종료하면 어떻게해야합니까? 이 기능은 Gmail에서 제공하는 임시 보관함과 유사합니다.

+3

이것은 세션을위한 것입니다. – SorcyCat

답변

5

Q1> 어떻게 임시 데이터를 저장합니다?

당신이 할 수있는 몇 가지 방법이 있습니다. 다른 테이블에 저장할 수 있습니다. 또한 완성 된 프로파일과 동일한 테이블에이 프로파일을 저장할 수도 있지만 (아마도 더 많이 사용됨)이 목적을 위해 컬럼을 통해 불완전한 플래그를 지정할 수 있습니다. 이 열의 이름은 complete 일 수 있습니다. 프로파일이 완료되지 않은 경우 0 또는 false으로 설정됩니다. 완료되면 1 또는 true으로 설정됩니다. 그런 다음이를 기반으로 쿼리 할 수 ​​있습니다.

그런 다음 필요한 모든 절차를 통해 데이터를 "확인"하고 필요에 따라 열을 1 또는 true으로 설정할 수 있습니다. 사용자가 가 양식을 제출 한 후 종료하지 않고 임시 데이터를 저장하는 경우

Q2는> 어떻게해야합니까. 이 기능은 Gmail에서 제공하는 초안 기능처럼 보입니다.

위의 대답은이 목적에도 도움이됩니다.

데이터를 다시로드하고 사용자가 불완전한 양식을 계속 작성해야하는 경우이를 허용하기 위해 일종의 식별자를 가져와야합니다. 쿠키를 설정하거나 SSN, 전화 번호, 학생 ID 번호 등 (또는 조합)과 같은 양식 맨 위에 입력하는 고유 한 식별자로 설정할 수 있습니다.


Gmail의 초안 기능과 같은 기능을 찾고 있다면, 당신은 자동으로 데이터를 자동 저장의 매 X 초/분 화재 AJAX 호출의 일종을 구현해야합니다.

6

저장하고자하는 입력란에세션을 만들 수 있습니다.예를 들어

$this_form = array(
    'field1' = 'value', 
    'field2' = 'value2', 
); 

는 그런 다음 세션이 저장 :

$_SESSION['this_form'] = $this_form; 

당신이 방금 세션에서 $_POST 또는 $_GET 변수를 저장할 수있는 정말 게으른하십시오.

$_SESSION['my_post'] = $_POST;// or $_GET depending on your form. 

그리고 물론 평소 예방 접종을하고 유효성을 검사해야만 알 수 있습니다.

저장된 세션 변수를 나중에 호출하여 나중에 다시 읽을 수 있습니다.

echo $_SESSION['this_form']['field1']; 

당신이 세션을 완료 한 후에는 설정되지 않은 명령으로 삭제할 수 있습니다

사용할 수 또한 세션 기능이 있습니다
unset $_SESSION['this_form'] 

:

PHP Session Functions

+0

이 답변은 오래된 Google 히트이기 때문에 크기 제한 (4K)이있는 쿠키를 추가하고 모든 요청에 ​​대해 쿠키 데이터를 검색 할 때 상당히 느려질 것입니다 (즉, '