2013-07-13 2 views
0

세션 추적을 사용하여 한 페이지에서 다음 페이지로 제출 된 데이터를 보존하는 여러 페이지 양식을 표시하려고합니다. $_POST['stage']은 표시 할 양식을 결정합니다. 각 양식에는 $stage 변수를 1 씩 증가시키는 값이있는 숨겨진 입력 형식이 있지만 첫 번째 양식의 데이터를 제출할 때 $stage의 값은 다음 양식이 표시되지 않는 것처럼 유지됩니다. 세션 수는 php.ini에서 사용할 수 있습니다. 페이지의 상단에 session_start()를 추가PHP에서 다중 페이지 양식에 세션 추적 사용

<?php 
session_start(); 

//Determine which integer to assign to the stage 
if (($_SERVER['REQUEST_METHOD'] == 'GET') || (!isset($_POST['stage']))) { 
    $stage = 1; 
} else { 
    $stage = (int) $_POST['stage']; 
} 

//Save any submitted data 
if ($stage > 1) { 
    foreach ($_POST as $key => $value) { 
    $_SESSION[$key] = $value; 
    } 
} 
?> 

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>My Form Example</title> 
    </head> 
    <body> 
    <?php if ($stage == 1) { ?> 
     <form action='<?php echo $_SERVER['SCRIPT_NAME'] ?>' method='post'> 
      <label for='firstField'>First field:</label> 
      <input type='text' name='first_field /><br /> 
      <input type='hidden' name='stage' value='<?php echo $stage + 1 ?>' /> 
      <input type='submit' value='Next' /> 
     </form> 
    <?php } else if ($stage == 2) { ?> 
     <form action='<?php echo $_SERVER['SCRIPT_NAME'] ?>' method='post'> 
      <label for='secondField'>Second field:</label> 
      <input type='text' name='second_field /<br /> 
      <input type='hidden' name='stage' value='<?php echo $stage + 1 ?>' /> 
      <input type='hidden' value='Done' /> 
     </form> 
    <?php } ?> 
    </body> 
</html> 

답변

1

시도 :

은 여기 내 예입니다. 그것이 제가 알아 차린 첫 번째 것입니다.

+0

입니다에는 끝 따옴표 없다지만 표시되지 않는 것 어떤 이유로 질문을 올릴 때까지. 내 백틱 후 첫 번째 코드 줄입니다. – Gimme5

0

작업 스크립트에서 오타가 있음을 발견했습니다. 뒤늦은 지쳐서, 나는 전체 스크립트를 복사하여 붙여 넣어야했다. 죄송합니다. 이 스크립트는 잘 작동합니다 (질문을 게시 한 후에도 나타나지 않는 시작 부분에 session_start() 사용).

0

문제가 무엇인지 언급하지 않았기 때문에 정확하게 구분하고 정확하게 찾을 수있게되었으므로보다 정확한 답변을 제공 할 것입니다. 문제는 라인

<input type='text' name='first_field /><br /> 

<input type='text' name='second_field /<br /> 

그래서 내 마지막 작업 스크립트 내 코딩 예를 작성하는 것이이

<?php 
session_start(); 
$stage = 0; 
//Determine which integer to assign to the stage 
if (!isset($_POST['stage'])) { 
    $stage = 1; 
} else { 
    $stage = (int) $_POST['stage']; 
} 

//Save any submitted data 
if ($stage > 1) { 
    foreach ($_POST as $key => $value) { 
     $_SESSION[$key] = $value; 
    } 
} 
?> 

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>My Form Example</title> 
    </head> 
    <body> 
    <?php if ($stage == 1) { ?> 
     <form action='<?php echo $_SERVER['SCRIPT_NAME'] ?>' method='post'> 
      <label for='firstField'>First field:</label> 
      <input type='text' name='first_field' /><br /> 
      <input type='hidden' name='stage' value='<?php echo $stage + 1 ?>' /> 
      <input type='submit' value='Next' /> 
     </form> 
    <?php } else if ($stage == 2) { ?> 
     <form action='<?php echo $_SERVER['SCRIPT_NAME'] ?>' method='post'> 
      <label for='secondField'>Second field:</label> 
      <input type='text' name='second_field' /<br /> 
      <input type='hidden' name='stage' value='<?php echo $stage + 1 ?>' /> 
      <input type='hidden' value='Done' /> 
     </form> 
    <?php } ?> 
    </body> 
</html>