2017-06-08 13 views
0

ユーザーからのフォーム入力を受け取り、別のフォームの別のページにその情報を渡してから、もう一度入力してその前のデータを別のページに渡そうとしています。両方の形式からの入力を表示します。PHPセッションは複数のポストフォームデータを複数のページに渡さない

最初のページで、ユーザーは情報を入力し、送信をクリックして、最初のページからの入力を表示する2番目のページを開き、詳細情報を入力するように求めます。彼らは2ページ目の情報を入力し、もう一度submitをクリックすると3ページ目に戻り、前のページからのすべての入力が表示されます。

コードを実行すると、フォームからのポスト値は次のページには渡されません。

私はこのような問題について複数の質問があることを知っていますが、私が見て回ったすべての回答は私の問題を解決しませんでした。ここで

は私のコードです:ので

page1.php

<?php 
session_start(); 
echo 'session id: '; 
echo session_id(); 
$_SESSION['test1'] = $_POST['test1']; 
?> 

<html> 
<body> 
    <p>Page 1 Form</p> 
    <form action="page2.php" method="post"> 
     <input type="text" name="test1"/> 
     <input type="submit" name="submit1" value="Submit!" /> 
    </form> 
</body> 
</html> 

page2.php

<?php 
session_start(); 
echo 'page2.php<br />'; 
echo 'session id: '; 
echo session_id(); 
echo '<br />'; 
echo 'input from page1.php: '; 
echo $_SESSION['test1']; 
$_SESSION['test2'] = $_POST['test2']; 
?> 

<html> 
<body> 
    <p>Page 2 Form</p> 
     <form action="page3.php" method="post"> 
      <input type="text" name="test2"/> 
      <input type="submit" name="submit2" value="Submit!" /> 
     </form> 
</body> 
</html> 

page3.php

<?php 
session_start(); 
echo 'page3.php<br />' 
echo 'session id: '; 
echo session_id(); 
echo '<br />'; 
echo $_SESSION['test1']; 
echo $_SESSION['test2']; 
?> 

答えて

1

$_POST['test1']が読み込まれることはありませんはpage2.phpに、page2.phptest2と表示されます。

また、データをPOSTするだけでセッションを使用する必要はありません。あなたはこれを行うことができます。

page1.php

<html> 
<body> 
    <p>Page 1 Form</p> 
    <form action="page2.php" method="post"> 
     <input type="text" name="test1"/> 
     <input type="submit" name="submit1" value="Submit!" /> 
    </form> 
</body> 
</html> 

page2.php

<html> 
<body> 
    <p>Page 2 Form</p> 
     <form action="page3.php" method="post"> 
      <input type="hidden" name="test1" value="<?php echo htmlspecialchars($_POST["test1"]);?>"/> 
      <input type="text" name="test2"/> 
      <input type="submit" name="submit2" value="Submit!" /> 
     </form> 
</body> 
</html> 

page3.php

<?php 
echo 'page3.php<br />' 
var_dump($_POST["test1"]); 
var_dump($_POST["test2"]); 
?> 
1

あなたが解析している値の後に値をフィールドする必要があります。

1. $_SESSION['test1'] = $_POST['test1']; 

が、あなたの行動は「page2.php」に行くと、あなたがフォームの前にセッションをフィールドでは、空の値を取得するので、提出された、ので、私はuが空のセッションを持っていると思う があり、より良い方法は、あなたですpage2.php

2. $_SESSION['test2'] = $_POST['test2']; 

あなたの行動は "page3.php" に行くに$ _SESSION [ 'TEST1']をフィールドする必要があり、あなたはとてもpage3.php

に$ _SESSION [ 'TEST2を']フィールド必要があります完全なコードは次のようになります。

ページ1

<?php 
session_start(); 
echo 'session id: '; 
echo session_id(); 
?> 

<html> 
<body> 
    <p>Page 1 Form</p> 
    <form action="page2.php" method="post"> 
     <input type="text" name="test1"/> 
     <input type="submit" name="submit1" value="Submit!" /> 
    </form> 
</body> 
</html> 

ページ2

<?php 
session_start(); 
echo 'page2.php<br />'; 
echo 'session id: '; 
echo session_id(); 
echo '<br />'; 
echo 'input from page1.php: '.$_POST['test1']; 
$_SESSION['test1'] = $_POST['test1']; 
?> 

<html> 
<body> 
    <p>Page 2 Form</p> 
     <form action="page3.php" method="post"> 
      <input type="text" name="test2"/> 
      <input type="submit" name="submit2" value="Submit!" /> 
     </form> 
</body> 
</html> 

ページ3

<?php 
session_start(); 
echo 'page3.php<br />' 
echo 'session id: '; 
echo session_id(); 
echo '<br />'; 
$_SESSION['test2'] = $_POST['test2']; 
echo $_SESSION['test1']; 
echo $_SESSION['test2']; 
?> 
関連する問題