2012-02-02 4 views
1

사용자가 세부 정보를 입력 한 후 저장 버튼을 클릭하여 데이터베이스에 데이터를 저장하는 형식이 있습니다. 이제 페이지 브라우저를 새로 고침하면 저장을 클릭 한 후 다시 보내달라고 요청하십시오. 다시 보내면 데이터베이스에서 중복 항목을 사용할 수 있습니다. 데이터베이스 삽입 프로세스가 동일한 페이지에 있습니다. 단일 페이지에서 프로세스를 완료 한 후 재전송을 방지 할 수 있습니까? 브라우저를 새로 고침하면 데이터베이스에 중복 항목 추가 -

은 동일한 하나를 참조하면

+0

이 문제의 잘 알려진 해결 방법은 https://en.wikipedia.org/wiki/Post/Redirect/Get –

답변

0
  1. 당신은 DB에 고유 제한 조건을 사용하면 (AN 내가해야한다고 생각) 할 수

  2. header("Location: somepage.php")을 사용하여 제출하고 insert을 수행 한 후 사용자를 리디렉션 할 수 있습니다 (포스트 그레스에 대한 예를 : CONSTRAINT c_name UNIQUE (field_name)를)

+0

예. 알고 있습니다. 하지만 한 페이지에서이 작업을 수행 할 수 있습니까? – Hardik

+0

@Hardik 두 번째 옵션은 삽입과 같은 페이지에서 수행 할 수 있습니다. – k102

+0

괜찮습니다. 고맙습니다. – Hardik

0

번호가 고유 트랜잭션을 식별하는 양식에 숨겨진 필드를 추가하고 업데이트를 거부 사전에 감사합니다.

그 또는 GET 요청으로 전환하기 위해 다른 페이지로 리다이렉트하는 것.

1

한 가지 방법은 PHP 코드에 다음과 같이 추가하여 브라우저의 캐시를 무효화하는 것입니다.

header("Expires: Mon, 20 Dec 1998 01:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-cache, must-revalidate"); 
header("Pragma: no-cache"); 
+0

이것은 실제로 양식 데이터를 잊어 버리거나 HTML 자체 만 잊어 버릴 것을 브라우저에 알 립니 까? –

+0

이 코드는 어디에 둘 수 있습니까? – Hardik

관련 문제