2011-01-06 9 views
0

페이지에 양식이 있습니다. 이제는 게시물을 사용하여 동일한 페이지에 양식을 제출합니다.이 부분은 잘 작동합니다. 하지만 페이지를 새로 고침하면 양식이 다시 제출됩니다. 문제를 해결하는 방법에 대한 단서가 있습니다.여러 양식 제출 페이지 Referesh PHP

+0

당신은 리디렉션을 사용하거나이 중복 – shankhan

+0

가능한 중복을 피하기 위해 형식 넌스를 사용할 수 있습니다 http://stackoverflow.com/questions/3923904/preventing-form-resubmission, http://stackoverflow.com/questions/880437/prevent-double-form-submissions, http://stackoverflow.com/questions/218907/how-to-handle-multiple-submissions-server-side ... 등 ... – Yahel

답변

3

헤더를 동일한 페이지 또는 다른 페이지로 리디렉션합니다.

+0

나는 리디렉션하지만 문제는 페이지가 헤더 - body-footer에서 분리되어 있습니다. 리디렉션하려고 할 때 경고 : 헤더가 이미 (header.php)에 전송되어 페이지에있는 헤더를 가리 킵니다. 이걸 처리할까요? –

+0

머리글은 출력 전에 와야합니다 (단일 공백으로도 경고가 발생 함). 나는 페이지의 상단에 헤더를 두는 것을 권장하지만, 출력 버퍼링을 미리 켜 놓을 수도있다. 그것은 비록 높은 CPU 부하를 일으킬 것을 알고 있어야합니다. – simshaun

+0

은 출력 버퍼링을 사용하여 해결했습니다. –

0

세션으로 작업 할 수 있습니다. 세션에 양식 이름이 있으면 양식을 다시 처리하지 않습니다.

$_SESSION['form']['name_of_the_form'] = time(); 
2

POST 요청을 처리 한 후 동일한 페이지로 다시 리디렉션하십시오.

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    # process the request ... 

    # ... and redirect 
    header('Location: page.php'); 
} 
0

다른 사람들이 지적했듯이 사용자의 브라우저로 다시 보낸 헤더를 수정하여 HTTP 리디렉션을 사용할 수 있습니다. PHP의 header() 함수를 사용하면이 작업을 수행 할 수 있습니다. 아무것도 출력하기 전에이 함수 호출을 실행해야합니다. 그렇지 않으면 실패합니다. 다음과 같이 보일 수 있습니다.

<?php 
// some code to process the form data here 
header('Location: page.php'); // redirect user to page.php 
+0

리다이렉트를하려고하는데, 페이지가 헤더 - 바디 - 푸터에서 분리되어 있습니다. 리다이렉션하면 경고 : 헤더가 이미 헤더 (header.php)에 보내져 헤더를 가리키고 있습니다. 나는 페이지에있다. 어떻게 처리 할 수 ​​있니? –