読者です 読者をやめる 読者になる 読者になる

Webデザインの勉強 | フェリカテクニカルアカデミーWebサイト制作科サポートブログ

ゲストブック - 確認画面作成

PHP+MySQL

確認画面作成

  • 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
//初期化
$uname = '';
$email = '';
$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="submit3.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>