2013-12-12 6 views
4

PHP 스크립트에 문제가 있습니다. 다음과 같이 작동해야합니다. 사용자가 예약 정보를 입력하면 세부 정보가 preservation.php로 전송됩니다.PHP 헤더가 PHP 파일을 전송하지 않는 동안

인원이 6 명보다 많으면 데이터베이스에 데이터가 들어 가지 않도록해야합니다. 동시에 채워진 세부 정보를 원래 양식으로 다시 보내야하므로 사용자가 세부 정보를 편집 할 수 있습니다.

하지만 헤더는 preservation.php를 다운로드로 다시 보냅니다. 콘텐츠는 HTML 형식이며 PHP는 아닙니다.

$post_date = 'test=test'; 

내가 결코 내가 있기 때문에 문제의 원인을 완전히 확실하지 않다,

$post_data = 'test=test'; 

둘째해야합니다 모든

$username = $_POST['username']; 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $tel = $_POST['tel']; 
    $date = $_POST['date']; 
    $time = $_POST['time']; 
    $pers = $_POST['pers']; //Amount of persons 
    $comment = $_POST['comment']; 

    if($pers >= 7){ 


      $post_date = 'test=test'; //Just to test the script 
      $content_length = strlen($post_data); 

      header('POST reservation.php'); 

      header('Host: localhost'); 

      header('Connection: close'); 

      header('Content-type: application/x-www-form-urlencoded'); 

      header('Content-length: ' . $content_length); 

      header(''); 

      header($post_data); 

      header('Location: reservation.php'); 


    } 
+3

'$ post_data'가'$ post_data' 인 오타입니다. – SquareCat

+0

'$ _POST'에'print_r()'을 써서 그 값을 봅니다. 'if()'조건이 올바르다. –

+0

당신의 다른 코드가 어떻게 생겼는지 모르겠지만,'preservation.php'에'require_once ('reservation.php')'를하고 다른 모든 문제를 즉시 해결할 수 있다면 유용 할 것입니다. 여러 요청을 통해 사용자를 라우팅하는 대신에? – SquareCat

답변

1

첫째, 당신은 당신의 코드에 오타가 이미 게시 된 요청에서 데이터를 다시 게시하는 데 필요합니다. 난 내 의견에 제안한 것처럼

, 난 당신이 대신이 같은 문제를 해결하는 것이 좋습니다 :

  1. 이 스크립트에 양식을 보내기
  2. 이 양식을 제출 유효성을 검사 여부를 결정하기 위해 스크립트를 사용하여 (비교 예를 들어 사람의 수)
  3. 유효하지 않은 경우 원래 폼 페이지를 즉시 브라우저로 다시 보냅니다 (다른 의견에서 언급 한대로 reservation.php 파일을 포함하거나 다른 방법으로 이 시점에서 의미를 가짐).
1

PHP header() 함수는 HTTP 헤더를 사용자 에이전트 (예 : 웹 브라우저)로 보냅니다. header('Content-type: application/x-www-form-urlencoded');을 수행하면 사용자 브라우저가 전체 페이지를 application/x-www-form-urlencoded으로 처리하여 웹 브라우저가 구문 분석 및 표시하는 대신 페이지를 다운로드하려고한다는 사실을 효과적으로 알리고 있습니다.

POST 요청을 브라우저로 다시 보낼 수 없습니다. 당신이하려는 것은 시도하는 방식으로 할 수 없습니다.

양식 데이터를 유지하려면 브라우저가 이전 페이지로 돌아가거나 사용자가 양식을 처음 제출했을 때 수집 된 값을 사용하여 양식을 다시 작성할 수 있습니다.

관련 문제