2017-11-05 17 views
0

セッションを使用してフォーム入力を保存しようとしていますが、最後に送信されたフォームでのみ機能します。セッションでフォーム情報を保存する

私はこのように書きますのindex.phpを持っている:

<?php 
    session_start(); 
    $_SESSION['number-of-sessions'] = 0; ?> 
... 

その後、form.phpするためのリンクがあります:

... 
    <form action='display.php' method='post'> 
    <input type='text' name='name'/> 
    <input type='text' name='id'/> 
    <input type='submit' value="Submit"/> 
... 

そして、ここではdisplay.phpです:

<?php 
    session_start(); 
    $_SESSION['number-of-sessions']++; 
    $_SESSION[$_SESSION['number-of-sessions']] = $_POST; 
?> 
... 
<?php 
    for($i = 1; $i <= $_SESSION['number-of-sessions']; $i++) { 
     print_r($_SESSION[$i])); 
    } 
?> 
// another link that goes back to form.php 

基本的に、それは常に最後に提出されたフォームを印刷し、その他は空白スペースです。

これを行う方法は他にありますか、それとも正しく行う方法はありますか?

p.s:データベースを使用することはできません。

+0

あなたがテストしているブラウザでCookieが有効になっていますか? PHPSESSIDがCookieに存在し、ページリクエスト間で変更されていないことを確認します(存在する場合は、セッションで何かが壊れている)。 – IncredibleHat

+0

はい、クッキーは有効で、私のセッションIDは同じです。 –

+0

そして、あなたは決して 'index.php'に戻りませんか?複数のフォームを送信する同じセッションで、 'form.php'と' display.php'の間でのみバウンスしますか?セッションのタイムアウト時間内にすべてタイムアウトしないようにするには? – IncredibleHat

答えて

0

驚くことではありませんが、セッションごとに新しい$_SESSIONが用意されています。そのようにしても情報は保存されません。

セッション間でデータを永続化したい場合は、どこかで永続化する必要があります。たとえば、データベースを使用できない場合は、ファイルに書き込むことを検討してください。

+0

私はテストで同じセッションIDを持っています、私はちょうど '$ _SESSIONインデックス'を変更します、それは間違っていますか?申し訳ありませんが、私は理解できませんでした。 –

+0

私は彼がセッションがタイムアウトすると(ユーザーが長時間過ぎ去ったために新しいセッションを開始した)ことを意味すると思います。複数のユーザーが参加した場合、セッション内でセッションと同じデータを共有することはありません。ユーザーごと、セッションごと(通常は20分)です。 – IncredibleHat

関連する問題