양식 제출 오류 후 반환된 콘텐츠가 사라지면 어떻게 해야 하나요? 오늘은 이 문제를 분석하고 해결해 보겠습니다.
상태 개요:
양식 정보를 작성하고 제출할 때 발생하는 문제는 사용자가 양식을 작성하고 제출한 후 프로그램에서 요구 사항을 충족하지 않는다고 판단하고 반환하면 이전에 작성한 양식 정보가 지워진다는 것입니다. . 입력하는 정보의 양이 적으면 상관없지만, 입력하는 정보의 양이 상대적으로 많으면 정보를 입력하는 사람의 기분에 직접적인 영향을 미치게 됩니다. 따라서 양식 제출 오류가 반환된 후 입력한 내용이 사라지는 문제를 해결하는 것이 사용자 경험 개선을 위해 시급한 문제입니다.
이러한 문제에 대해 다음과 같은 상황을 정리했습니다.
(1) 페이지는 session_start 함수를 사용합니다. 이 함수의 한 가지 기능은 현재 페이지가 새로 고쳐지지 않도록 하는 것입니다. 해결 방법은 이 함수 뒤에 다음 코드를 추가하는 것입니다.
header("Cache-control:private");//注意在本行之前你的PHP程序不能有任何输出
을 추가하면 여러 가지 다른 솔루션이 있습니다.
session_cache_limiter('nocache'); //清空表单 session_cache_limiter('private'); //不清空表单,只在session生效期间 session_cache_limiter('public'); //不清空表单,如同没使用session一般
(2) Header 메소드를 사용하여 메시지 헤더 Cache-control을 설정하고 페이지에 다음 코드를 추가합니다.
header('Cache-control: private, must-revalidate'); //페이지 바운스를 지원합니다. 이 줄 앞에는 출력할 수 없습니다.
(3) session_cache_limiter 메소드를 사용하고 페이지에 다음 코드를 추가합니다.
session_cache_limiter('private, must-revalidate'); //session_start 메소드 이전에 작성해야 할 사항
다음은 Cache-Control 메시지 헤더 필드에 대한 보충 설명입니다.
Cache-Control은 요청과 응답이 따르는 캐싱 메커니즘을 지정합니다. 요청 메시지 또는 응답 메시지에서 Cache-Control을 설정해도 다른 메시지를 처리하는 동안 캐싱 프로세스가 수정되지 않습니다. 요청 중 캐시 지시어에는 no-cache, no-store, max-age, max-stale, min-fresh, only-if-cached가 포함되며, 응답 메시지의 지시어에는 public, private, no-cache가 포함됩니다. , 저장 안 함, 변환 안 함, 재검증 필수, 프록시 재검증, 최대 수명. 각 메시지에 포함된 지침의 의미는 다음과 같습니다.
공개: 는 모든 캐시에서 응답을 캐시할 수 있음을 나타냅니다.
비공개: 단일 사용자에 대한 응답 메시지의 전체 또는 일부를 공유 캐시에서 처리할 수 없음을 나타냅니다. 이를 통해 서버는 다른 사용자의 요청에 유효하지 않은 사용자의 부분 응답만 설명할 수 있습니다.
no-cache: 요청 또는 응답 메시지를 캐시할 수 없음을 나타냅니다.
no-store: 중요한 정보가 의도치 않게 공개되는 것을 방지하기 위해 사용됩니다. 요청 메시지에 이를 보내면 요청 메시지와 응답 메시지 모두 캐싱을 사용하게 됩니다.
max-age: 클라이언트가 지정된 시간(초)보다 크지 않은 수명으로 응답을 받을 수 있음을 나타냅니다.
min-fresh: 클라이언트가 현재 시간에 지정된 시간을 더한 것보다 짧은 응답 시간으로 응답을 받을 수 있음을 나타냅니다.
max-stale: 클라이언트가 제한 시간 이후에 응답 메시지를 받을 수 있음을 나타냅니다. max-stale 메시지 값을 지정하면 클라이언트는 지정된 제한 시간 값을 초과하는 응답 메시지를 수신할 수 있습니다.
이 기사를 읽은 후 비슷한 문제가 발생하면 이 솔루션은 PHP 웹사이트에만 해당된다는 점을 기억하세요.