2012-01-21 2 views
0

내 페이지 "thePage.php"에서 다음을 발견했습니다. 내 페이지 thePage.php에는 사용자가 이름과 이메일을 입력하고 제출 버튼을 클릭 할 수있는 양식이 있습니다.이전 양식 게시를 무시하도록 브라우저에 지시합니다.

1) 사용자가 다른 페이지의 링크를 클릭하여 thePage.php에 도착하면 thePage.php가 서버에서 호출됩니다. , thePage가 브라우저에 나타나면

<div> 
    <a id="logged-in-status" hef="http://mySite/thePage.php"> Click to go to the data entry page</a>  
</div> 

, 서버에서 검색 된 : 여기에 클릭하면 서버에서 thePage.php를 검색하는 링크가 브라우저에 표시되는 HTML입니다 브라우저의 '다시로드'버튼을 클릭하면 서버에서 페이지를 새로 고침하고 다른 것을 얻을 수 없습니다.

위의 div는 내 index.php 방문 페이지에 나타납니다. 사용자가 위의 링크를 클릭하면 thePage.php가 서버에서 요청되어 브라우저에 표시됩니다. thePage.php에는 '이름과 이메일 입력'양식이 있습니다. thePagePage.php가로드되고 나면 빈 페이지, 채워지지 않은 페이지 또는 제출 된 페이지가 표시됩니다. 브라우저에서 '다시로드'버튼을 클릭하면 페이지가 다시로드됩니다. '정보를 다시 전송하려고합니다.'라는 메시지 상자 경고가 표시되지 않습니다. 단지 페이지가 다시로드됩니다. 두 번째 - 사용자가 양식 데이터를 입력했거나 입력하지 않은 경우 (중요하지 않음) '제출'버튼을 누릅니다. - 양식을 처음 제출 한 후 (1)의 다시로드 동작, 위는 손실됩니다. 양식이 비어 있고 사용자가 '제출'을 누르면 브라우저는 내부적으로 '더티 비트'를 설정하는 것처럼 보입니다. 따라서 브라우저 재로드 버튼을 클릭하면 브라우저가 "아 봐"라고 말한 것 같습니다. 분명히 있습니다. 이 페이지의 양식 - 한 번 이상 제출되었습니다. - 양식 제출의 결과를 무시할 것입니다. 양식은 한 번 제출되었으므로 이제는 더 이상 필요하지 않습니다. 페이지를 새로 고침하면 '이전에 제출 한 정보를 다시 보내기'에 대한 메시지 상자가 표시됩니다. "

내가 원한다. 페이지의 양식이 제출 된 경우에도 브라우저가 내부적으로 설정 한 '더티 비트'를 지우고 싶습니다. 브라우저를 위의 (1)에서와 같이 동작 시키려고합니다. 마치 방금 클릭 한 것처럼 작동합니다. 그 페이지에있는 양식이 제출되었다는 것을 브라우저가 잊어 버릴 수 있도록 나를 thePage로 안내 한 다른 페이지의 링크.

이렇게하는 방법이 있어야합니다. 생각해 보면 - 다른 곳에서 thePage.php에 대한 링크를 클릭하면 '더티 비트'가 삭제되고 thePage 재로드 동작은 위의 (1)에서와 같이 '정보 다시 보내기'메시지 상자없이 2).

프로그래밍 방식으로 브라우저에 "보이는 것처럼 보입니다. 내가 방금 thePage.php에 대한 오프 페이지 링크에서 왔다고 추측 할 수 있습니까?이 페이지의 이전 양식 제출을 모두 잊어 버려서 고맙습니다. 정말 고마워요. "

+0

당신은 약 200 단어를 잃어 버렸습니다. 조금 단순화하고 싶을 수도 있습니다. – mrtsherman

+0

페이지를 다시로드 할 때 POST 데이터를 다시 전송한다고 생각합니다 (예 : F5) ... 모든 브라우저에서와 마찬가지로, 맞습니까? – madflow

+0

프로그래밍 방식으로 노출되는 브라우저의 '더티 비트'에 대한 개념 - 프로그래밍 방식으로 조작 할 수 있습니까?나는 thePage에 대한 앵커 링크를 통해 thePage에 막 도착한 것처럼 조건 (1)로 되돌아 가야한다. – wantTheBest

답변

1

일단 PHP 스크립트에서 양식 데이터를 구문 분석 한 다음 header()을 사용하여 페이지로 다시 전송하십시오. 이렇게하면 재전송 데이터 통지를 막을 수 있습니다.

<?php 
////Parse form 
header("Location: http://Wherever"); 
exit(); 
?> 

양식을 알고 싶다면

은 실패 단지 $_GET로 보내고 그 픽업/성공적으로 제출되었습니다.

?php 
////Parse form 
header("Location: http://Wherever?notice=successful"); 
exit(); 
?> 
+0

+1, 감사합니다. 정확히 내가 원하는 것을 발견하지 못했습니다. 브라우저에 프로그래밍 방식으로 "더러운 비트를 다시 설정하고 사용자가이 페이지에 양식을 게시 한 적이 없으며 페이지 만로드했다고 가정 할 경우 클릭 한 페이지에 대한 오프 페이지 링크로 이동하십시오. " – wantTheBest

+0

현재 이러한 방식으로 브라우저를 조작 할 수 없습니다. Get을 사용하여이 게시물을 리디렉션하는 것이 현재 가장 좋은 방법입니다. 다시 제출 토큰 등을 막을 수는 있지만 중복 제출에 대해 걱정할 필요는 없지만 여전히 메시지를 볼 수 있습니다. – Zac

관련 문제