ゲストブック - 確認画面作成
確認画面作成
- SESSIONデータを使ったエラーチェック
- 未入力のエリアがあった場合に、入力画面に戻す
《confirm.php》
<?php //issetは変数の中に値があるか、もしくは変数自体が存在するか確認する関数 if (!isset( $_POST[ 'm_name' ] ) || !isset( $_POST[ 'm_mail' ] )||!isset( $_POST[ 'm_message' ] )){ // 'Location:パス(path)でその場所に遷移する' header( 'Location:index.php' ); exit; } // セッションの開始 session_start(); // 入力値の取得 $m_name = htmlspecialchars($_POST['m_name'], ENT_QUOTES, 'UTF-8'); $m_mail = htmlspecialchars($_POST['m_mail'], ENT_QUOTES, 'UTF-8'); $m_message = htmlspecialchars($_POST['m_message'], ENT_QUOTES, 'UTF-8'); // 入力値をセッション変数に格納 $_SESSION['m_name'] = $m_name; $_SESSION['m_mail'] = $m_mail; $_SESSION['m_message'] = $m_message; // 入力値のチェック if (empty($_POST[ 'm_name' ])) { echo 'お名前を入力してください。'; echo '<p><a href="index.php">入力画面へ戻る</a></p>'; exit; } if (empty($_POST[ 'm_mail' ])) { echo 'メールアドレスを入力してください。'; echo '<p><a href="index.php">入力画面へ戻る</a></p>'; exit; } if (empty($_POST[ 'm_message' ])) { echo 'メッセージを入力してください。'; echo '<p><a href="index.php">入力画面へ戻る</a></p>'; exit; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>確認画面 - ゲストブック</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <p>追加確認画面</p> <form action="submit.php" method="post"> <table> <tr> <th>名前</th> <td><?php echo $m_name; ?></td> </tr> <tr> <th>メールアドレス</th> <td><?php echo $m_mail; ?></td> </tr> <tr> <th>メッセージ</th> <td><?php echo nl2br($m_message); ?></td> </tr> <tr> <td colspan="2"> <input type="submit" value="書き込む"> </td> </tr> </table> </form> </body> </html>
index.phpにSESSIONデータを受け取れるように追加記述
- フォームに値を入れるだけの記述から変更します
- 入力洩れの場合に入力洩れ以外の値は記憶した状態で戻るために、SESSIONデータを受け取れるようにします
《index.php》
<?php //初期化 $m_name = ''; $m_mail = ''; $m_message = ''; // セッションの開始 session_start(); if(isset($_SESSION['m_name'])){ $m_name = $_SESSION['m_name']; } if(isset($_SESSION['m_mail'])){ $m_mail = $_SESSION['m_mail']; } if(isset($_SESSION['m_message'])){ $m_message = $_SESSION['m_message']; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ゲストブック</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <h1>ゲストブック</h1> <form method="post" action="confirm.php"> <table> <tr> <th>名前</th> <td><input type="text" name="m_name" class="msg" value="<?php echo $m_name; ?>"></td> </tr> <tr> <th>メールアドレス</th> <td><input type="text" name="m_mail" class="msg" value="<?php echo $m_mail; ?>"></td> </tr> <tr> <th>メッセージ</th> <td> <textarea rows="5"name="m_message" class="msg"><?php echo $m_message; ?></textarea> </td> </tr> </table> <input type="submit" value="確認する"> </form> </body> </html>
入力値の検証・加工を関数にした場合
《confirm.php》
<?php //issetは変数の中に値があるか、もしくは変数自体が存在するか確認する関数 if (!isset( $_POST[ 'm_name' ] ) || !isset( $_POST[ 'm_mail' ] )||!isset( $_POST[ 'm_message' ] )){ // 'Location:パス(path)でその場所に遷移する' header( 'Location:index.php' ); exit; } // セッションの開始 session_start(); // 入力値の取得・検証・加工 $m_name = chkString($_POST['m_name'], '名前'); $m_mail = chkString($_POST['m_mail'], 'メールアドレス', true); $m_message = chkString($_POST['m_message'], 'メッセージ'); // 入力値をセッション変数に格納 $_SESSION['m_name'] = $m_name; $_SESSION['m_mail'] = $m_mail; $_SESSION['m_message'] = $m_message; // 入力値の検証・加工 function chkString($temp = '', $field, $accept_empty = false) { // 未入力チェック if (empty($temp) AND !$accept_empty) { echo '「'.$field.'」には何か入力してください。'; echo '<p><a href="index.php">入力画面に戻る</a></p>'; exit; } // 入力内容を安全な値に $temp = htmlspecialchars($temp, ENT_QUOTES, 'UTF-8'); // 戻り値 return $temp; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ゲストブック</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <p>追加確認画面</p> <form action="submit.php" method="post"> <table> <tr> <td>名前</td> <td><?php echo $m_name; ?></td> </tr> <tr> <td>メールアドレス</td> <td><?php echo $m_mail; ?></td> </tr> <tr> <td>メッセージ</td> <td><?php echo nl2br($m_message); ?></td> </tr> <tr> <td colspan="2"> <input type="submit" value="書き込む"> </td> </tr> </table> </form> </body> </html>