2017-03-28 1 views
0

2つのフォームが段階的に提出されるとします。複数のステップフォーム提出、ブラウザのフォーム再送信ダイアログを取り除く

<form action='page2.php' method='post'> 
    <input type='email' name='email'> 
    <input type='submit' name='submit' value='Submit'> 
</form> 

ページ2:最初のページで、私は

のPage1を持っている電子メールが私のウェブサイトかどうかで利用できる場合は、このページでは、私がチェックします。利用可能な場合は、電子メールが表示され、ユーザに電話番号が尋ねられます。

if(isset($_POST['submit'])){ 

    echo $_POST['email']; 
    ?> 

<form action='page3.php' method='post'> 
    <input type='number' name='number'> 
    <input type='submit' name='submit' value='Submit'> 
</form> 

    <?php 

} 

ページ3:電話番号が与えられたとき、それはここで検証され、ユーザーが「somepage.html」にリダイレクトされます。

今、私の質問は、再送信の問題のフォームを処理します。しかし私は、ユーザーがページを更新するたびにそこのブラウザに「フォームの再発行」ダイアログボックスが表示されることを望んでいません。そして、このプロセスは2つのステップで行われなければならない。 Page2では、Page1に投稿したメールを表示する必要があります。このプロセス全体をどのように行うことができますか?コードが最初から最後まで(Page1からPage3まで)書かれていると助けになります。

+0

メールを保ち、私は決してありませんしながら、これは "ページ2" の "フォーム再提出" を削除してくださいこれは手動で行いますが、通常はフレームワークがそれを行います。私が誤っていないと、あなたが提出したデータは$ _POSTではなくセッションに保存されます(ページをリフレッシュすることで、このように再送信する必要はありません)http://stackoverflow.com/questions/14465464/storing-all-post-dataセッション中 – JapanGuy

+0

偽の指示をしている場合は私に修正してください。これにはセキュリティ上の欠陥があるかもしれません – JapanGuy

+1

クライアントが自分の電子メールアドレスを渡した状態で電話番号を尋ねることが唯一の目的ならば、 2つの書式か2つのページがあります。 – Kobbe

答えて

0

これを試してみてください:

Page1.php

<?php 
    session_start(); 
    if(isset($_POST['submit'])){ 
     $_SESSION['email'] = $_POST['email']; 
     header('Location:page2.php'); 
     exit; 
    } 
?> 

<form action='' method='post'> 
    <input type='email' name='email'> 
    <input type='submit' name='submit' value='Submit'> 
</form> 

+0

と照会して、電子メールが存在するかどうかを確認するために '$ _POST ['email']の代わりに' $ _SESSION ['email'] 'を使用してください。 – JapanGuy

+1

@JapanGuy私は何も確認しなかったので、 "問題 – Swellar

+0

オハイオ州私のコメントでOPを参照していた。しかし、それをより安全にする方法をあなたに尋ねることはできますか?自分のことを知りたい'$ _SESSION [" var "] = $ _ POST [" var "]'のように割り当てるだけで、特別な文字、htmlentities、引用符などをエスケープした後、 – JapanGuy

関連する問題