2012-03-22 2 views
6

양식을 제출 한 후 2 $ _POST 변수가 있습니다. 랜딩 페이지에서 $ _SESSION 변수로 바꾸고 $ _POST 변수를 설정 해제하여 사용자가 브라우저의 경고 메시지를받지 못하게하여 데이터를 다시 보내려고합니다. 나는이 게시물에 아무것도 표시되지 않습니다 에코하지만 매번 내가 다시 경고 브라우저를 얻을 다시로드하면

if(isset($_POST['clave']) && isset($_POST['email'])){ 
    $_SESSION['id_user']=$_POST['clave']; 
    $_SESSION['email']=$_POST['email']; 
} 
if(isset($_SESSION['id_user']) && isset($_SESSION['email'])){ 
    unset($_POST['clave']); 
    unset($_POST['email']); 
    //I do my stuff here 
} 

: 이것은 내 (작동하지 않는) 코드입니다.

+1

당신이하는 * 물건 *은 무엇입니까? –

답변

8

서버에서 $ _POST 데이터를 삭제할 수 없습니다. 브라우저는에 의해 이 저장되어 있기 때문에 브라우저가 경고합니다. 다시 데이터를 제출하면 서버로 다시 보내고 $_POST을 다시 채 웁니다.

당신이해야 할 일은 POST-REDIRECT-GET 패턴을 사용하는 것입니다.

POST 데이터를 세션에 덤핑하여 처리 한 다음 브라우저에 리디렉션을 보내고 HTML 문서는 보내지 마십시오. 그런 다음 브라우저는 서버에 GET 요청을하고 페이지를 제공합니다.

+0

감사합니다. 다른 모든 대답은 옳았지만이 문제는 내 문제를 해결하는 데 사용할 수있는 해결책을 제공합니다. 건배! –

4

불가능합니다. 사용자가 다시로드를 누를 때 PREVIOUS 작업이 다시 실행됩니다. 이는 게시물이었습니다. 양식을 처음 제출할 때 POST 값을 설정 해제 했더라도 새로 고침 작업은 완전히 새로운 요청이됩니다. 브라우저는 데이터를 다시 제출할 것인지 사용자에게 항상 묻습니다.

이 문제를 방지하려면 게시물이 형성된 후에 사용자를 다른 페이지로 리디렉션해야합니다.

  1. 사용자가 양식을 가져옵니다. 더 POST가 수행되지 않습니다 -
  2. 사용자 POST를
  3. 서버가
  4. 사용자가 새 페이지를
  5. 사용자 히트를 가져옵니다 새 페이지로 사용자를 리디렉션 형태는
  6. 사용자가 다시 새 페이지를 가져옵니다 다시로드합니다.
2

브라우저가 서버 측에 대해 경고하지 않으므로 안전하지 않은 작업을 수행해야한다는 확인을 요청하는 중입니다.

대부분의 경우이 문제가 발생하지 않는 을 사용해야합니다.

1

그에게 이전 포스트하지만 같은 문제 때문에 여기 쉬운 용액에 직면

  1. HTML 양식 두 변수를 게시 login.php ==>를 생성

  2. $ _POST [ 'myvar']에 의해 두 개의 변수를받는 getHome.php ==>을 작성하십시오; 함수와 세션에 이러한 두 개의 게시 된 변수를 넣어, 잘못된 사용자 n은 원하는 경우 여기에 전달합니다.

  3. home.php ==> 여기서 home.php ==>를 작성하면 if (ifetet ($ _ SESSION [ 'myvar']))) {display home} else {header ('location : login. PHP '); * 헤더 기능을 사용하면 로그인으로 리디렉션됩니다.php라면 당신은 로그인하지 않고 직접 home.php 파일을 열 수 있습니다.

그것 완료!

관련 문제