1

많은 필드가있는 페이지가 있습니다. 일단 사용자가 값을 입력하면 (양식 제출을 기다리지 않고) 데이터 저장소에 필드 값을 저장합니다. 일부 점수는 필드 값을 기반으로 계산되어 사용자에게 표시됩니다. 또한 사용자의 클라이언트 ID를 생성하여 사용자의 쿠키에 1 시간 동안 저장합니다.페이지 새로 고침을 올바르게 처리하는 방법은 무엇입니까?

나는 사용자가 브라우저에서 페이지를 새로 고침 할 때 어떻게해야하는지 확실하지 않다 :

  1. 사용자가 FF에서 F5를 누를 경우, 다음 필드 값은 여전히 ​​브라우저에 표시됩니다;
  2. 사용자가 Ctrl + F5를 누르면 값이 지워집니다.

두 경우 모두이 사용자에 대해 새 레코드를 만들고 싶지 않으므로 클라이언트 ID는 동일하게 유지되어야합니다. 그러나 시나리오 (1)에서는 데이터 저장소와 필드 점수에서 필드 값을 지워서는 안되지만 시나리오 (2)에서해야합니다. 서버 측에서 어떻게 인식 할 수 있습니까?

+0

왜 클라이언트 ID 클라이언트 측을 만드십니까? –

+0

@ShayErlichmen, 서버 측에서 생성됩니다. –

답변

0

설명 된 두 시나리오는 브라우저에 내장 된 동작입니다. 대부분의 브라우저는 데이터가 제출 된 페이지에서 F5 키를 누르면 양식 데이터를 다시 제출하려고합니다. 이것은 일반 사용자가 데이터를 잃지 않도록하기위한 것입니다.

마치 사이트에 들어가서 양식을 완성하고 다시 제출을 클릭하십시오.

이 데이터를 다시 처리하지 않으려면 임의의 키를 생성하여 숨겨진 양식 필드에 저장할 수 있습니다. 그런 다음 데이터가 제출되면이 키를 세션 변수에 저장하십시오. 데이터가 다시 제출되면 양식 데이터의 무작위 키와 ​​세션의 임의 키를 비교하는 포스트 백 주위에 체크를 할 수 있습니다. 두 데이터가 같으면 데이터가 이미 처리 된 것입니다.

0

사용자가 등록 페이지를 입력하여 데이터베이스에 저장할 때 세션 ID를 만듭니다. 세션 ID는 사용자가 브라우저를 닫을 때만 바뀔 것이라고 생각합니다.

사용자가 페이지를 새로 고치면 SESSION ID가있는 데이터베이스에서 값을 검색하십시오.

사용자가 제출 버튼을 클릭하고 데이터베이스에 값을 성공적으로 쿼리 할 때. SESSION ID를 삭제하면 양식 필드가 재설정됩니다.

0

가장 좋은 방법은 페이지를로드 할 때 db에 이미 저장된 각 양식 필드의 내용이 있는지 확인하는 것입니다. 그렇지 않으면 클라이언트 측 양식 필드 캐시 기술.

+0

데이터 저장소에 저장하면 어떻게해야합니까? 해당 필드에 표시 하시겠습니까? (실제로 ~ 150 필드가 있음) –

관련 문제