この例では、最初にデータ入力用画面を表示して、次のページでは入力内容を確認し、さらに次のページで確定のメッセージを表示させるという流れで処理します。ポイントはHTMLフォームから入力された内容を確認した後、そのデータをさらに次のPHPファイルに渡している点です。その方法として、「hidden」属性をもった<input>タグで表現される「隠しフィールド」を使っています。value属性に受け取ったデータをそのまま持たせることで、そのデータを画面に表示させることなく、次のファイルへPOSTしています。
ただし、隠しフィールドとはいっても、HTMLソースを見ればその内容は知られてしまいます。ユーザにソースを見られるとセキュリティ上の問題が発生するケースでは、この方法ではなく、セッション管理によるデータの受け渡しを行うのが安全です。
最初の画面でテキストを入力して「送信」ボタンをクリックします。入力内容の確認画面が表示されたら「OK」をクリックすると、確定のメッセージ画面が表示されます。
<?php header("Content-type: text/html; charset=utf-8"); if(!isset($_POST["btnExec"])){ $html = "テキストボックスに値を入力して「送信」ボタンをクリックしてください。"; $html .= "<form action=\"" . $_SERVER["PHP_SELF"] . "\" method=\"POST\">"; $html .= "<input size=\"40\" type=\"text\" name=\"inputdata\">"; $html .= "<input type=\"submit\" name=\"btnExec\" value=\"送信\">"; } else{ if(strlen($_POST["inputdata"]) > 0){ echo "テキストボックスに入力されたデータは「"; echo $_POST["inputdata"]; echo "」です!<br><br>"; echo "確定してよろしければ「OK」ボタンをクリックしてください。"; $html = "<form action=\"complete.php\" method=\"POST\">"; $html .= "<input type=\"hidden\" name=\"inputdata\" value=\"" . $_POST["inputdata"] . "\">"; $html .= "<input type=\"submit\" name=\"btnExec\" value=\"OK\">"; } else{ $html = "テキストボックスは空欄です!再入力してください。<br><br>"; $html .= "<form action=\"" . $_SERVER["PHP_SELF"] . "\" method=\"POST\">"; $html .= "<input size=\"40\" type=\"text\" name=\"inputdata\">"; $html .= "<input type=\"submit\" name=\"btnExec\" value=\"送信\">"; } } ?> <!DOCTYPE HTML> <html lang="ja-JP"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?=$html?> </body> </html>
<?php header("Content-type: text/html; charset=utf-8"); echo "入力データは「" . $_POST["inputdata"] . "」に確定されました!"; ?>