一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • お問い合わせフォームとDB接続の進捗
お問い合わせフォームの一部。
このコードに現在はDB連携を施す処理を追加している途中です。
現状ではデータベースに接続は出来ているのですが、入力した情報がデータベースに登録されない(空白で登録されている)状態です。
これを解決していくのがこれからの課題になります。
現状はChatGPTなどが有り解決に対してもさほど苦労模しなさそうですが、勉学に励んで
<?php
session_start();
  header(‘Cache-Control: no-store, no-cache, must-revalidate, max-age=0’);
  header(‘Cache-Control: post-check=0, pre-check=0’, false);
  header(‘Pragma: no-cache’);
  if (!isset($_SERVER[‘HTTP_REFERER’]) || strpos($_SERVER[‘HTTP_REFERER’], ‘contact.php’) === false) {
    header(‘Location: contact.php’);
    exit;
  }
  // フォームが送信されたときの処理
  if ($_SERVER[‘REQUEST_METHOD’] === ‘POST’) {
    // 入力されたデータを取得
    $name = $_POST[‘name’];
    $kana = $_POST[‘kana’];
    $tel = $_POST[‘tel’];
    $email = $_POST[’email’];
    $body = $_POST[‘body’];
    $_SESSION[‘name’] = htmlspecialchars($name, ENT_QUOTES);
    $_SESSION[‘kana’] = htmlspecialchars($kana, ENT_QUOTES);
    $_SESSION[‘tel’] = htmlspecialchars($tel, ENT_QUOTES);
    $_SESSION[’email’] = htmlspecialchars($email, ENT_QUOTES);
    $_SESSION[‘body’] = htmlspecialchars($body, ENT_QUOTES);
    $errors = [];
    if (empty($_POST[‘name’])) {
      $errors[‘name’] = ‘氏名を入力してください’;
    } elseif (mb_strlen($_POST[‘name’]) > 10) {
      $errors[‘name’] = ‘氏名は10文字以内で入力してください’;
    }
    // フリガナ
    if (empty($_POST[‘kana’])) {
      $errors[‘kana’] = ‘フリガナを入力してください’;
    } elseif (mb_strlen($_POST[‘kana’]) > 10) {
      $errors[‘kana’] = ‘フリガナは10文字以内で入力してください’;
    }
    // 電話番号
    if (!empty($_POST[‘tel’]) && !preg_match(‘/^[0-9]{10,11}$/’, $_POST[‘tel’])) {
      $errors[‘tel’] = ‘電話番号を正しく入力してください’;
    }
    // メールアドレス
    if (empty($_POST[’email’])) {
      $errors[’email’] = ‘メールアドレスを入力してください’;
    } elseif (!filter_var($_POST[’email’], FILTER_VALIDATE_EMAIL)) {
      $errors[’email’] = ‘メールアドレスを正しく入力してください’;
    }
    // お問い合わせ内容
    if (empty($_POST[‘body’])) {
      $errors[‘body’] = ‘お問い合わせ内容を入力してください’;
    }
    if (!empty($errors)) {
      header(‘Location: contact.php?errors=1’);
      exit;
    }
  }
?>
<!DOCTYPE html>
<html lang=”ja”>
<head>
<meta charset=”utf-8″>
<title>お問い合わせ確認画面</title>
<link rel=”stylesheet” type=”text/css” href=”base.css”>
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
<script src=”https://code.jquery.com/jquery-3.6.0.min.js”></script>
<script src=”script.js”></script>
<script src=”scripts.js”></script>
<script>
</script>
</head>
<body>
  <headers>
    <?php include(“head.php”); ?>
  </headers>
  <section class= “boxs”>
    <div class= “contact_box”>
      <h2>お問い合わせ</h2>
      <form action=”complete.php” method=”POST”>
        <p>下記の内容をご確認の上送信ボタンを押してください</p>
        <p>内容を訂正する場合は戻るを押してください。</p>
        <dl class= “confirm”>
          <dt>氏名</dt>
          <?php if(isset($_SESSION[‘name’])): ?>
          <dd><?php echo $_SESSION[‘name’]; ?></dd>
          <?php endif; ?>
          <dt>フリガナ</dt>
          <?php if(isset($_SESSION[‘kana’])): ?>
          <dd><?php echo $_SESSION[‘kana’]; ?></dd>
          <?php endif; ?>
          <dt>電話番号</dt>
          <?php if(isset($_SESSION[‘tel’])): ?>
          <dd><?php echo $_SESSION[‘tel’]; ?></dd>
          <?php endif; ?>
          <dt>メールアドレス</dt>
          <?php if(isset($_SESSION[’email’])): ?>
          <dd><?php echo $_SESSION[’email’]; ?></dd>
          <?php endif; ?>
          <dt>お問い合わせ内容</dt>
          <?php if(isset($_SESSION[‘body’])): ?>
          <dd><?php echo $_SESSION[‘body’]; ?></dd>
          <?php endif; ?>
          <dd class= “confirm_btn”>
            <button type=”submit”>送信する</button>
            <input type=”button” value=”戻る” onClick=”history.back();”>
          </dd>
        </dl>
      </form>
    </div>
  </section>
  <footer>
    <?php include(“foot.php”); ?>
  </footer>
</body>
</html>
The following two tabs change content below.

佐藤 海

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア