- ベストアンサー
POSTの複数回の使用について
- PHP初心者向けのお問い合わせフォームの開発方法について解説します
- フォームからの入力内容を確認画面に表示する方法や、foreachを使った連想配列の処理について説明します
- フォーム入力内容をメールで送信する方法についてもご紹介します
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
入力画面->確認画面->メール送信処理 という流れですよね? 入力画面からのPOSTの値は確認画面に受け継がれていますので、確認画面で_POSTの値を使うことができます しかし、確認画面からメール送信処理にはPOSTを渡すことができません webの性格上、1つの画面を生成して表示したら、プログラムは終了してしまいますので、POSTされた値は1回しか使えません これはPHPにかぎらず、webの特徴でありますのでどんな言語で作ってもこの状態になります。 ですからこの場合は、送信処理に対してもう一度POSTしてあげなくてはなりません <!-- 1ページ目 入力画面 --> <form action="confirm"> <input type="text" name="mail" value="" /> <input type="text" name="url" value="" /> <input type="submit" name="submit" value="投稿" /> </form> <!-- 2ページ目 確認画面 --> <form action="mailsend"> mail:<?php print $_POST["mail"]; ?> <input type="hidden" name="mail" value="<?php print $_POST["mail"]; ?>" /><br /> mail:<?php print $_POST["mail"]; ?> <input type="hidden" name="url" value="<?php print $_POST["url"]; ?>" /><br /> <input type="submit" name="submit" value="送信してトップに戻る" /> </form> こんな感じになります ただし! あくまでも概念的な説明で、実際にこのような実装をすると、セキュリティ的には大変あぶないものです。 例えば、入力画面で mailの項目のところにJavaScriptを入力した場合、確認画面でそのままJavaScriptを動かしてしまいます XSSとよばれるアタック方法が可能になってしまいますので、実際にはこのソースをそのまま使って一般公開しないでください。 具体的には、サニタイズをして_POSTを直接使わずに_SESSIONも併用したり、DBも併用したりして、次の画面に値を渡して上げる必要があります。
お礼
ありがとうございます。できました。 セキュリティもかねて勉強していきます! またよろしくお願いします!