実現したいこと
お問い合わせフォームをPHPで実装しようと思っています。
その中でPHPのバリデーションの組み方を教えていただきたいです。
発生している問題・分からないこと
strlen関数を用いて文字数の制限をかけるバリデーションを組んでいるのですがエラーが出てしまっています。
該当のソースコード
contact.php
1<?php 2 3session_start(); 4 5if(isset($_POST["submit"])) { 6 $name = htmlspecialchars($_POST['name'],ENT_QUOTES | ENT_HTML5); 7 $kana = htmlspecialchars($_POST['kana'],ENT_QUOTES | ENT_HTML5); 8 $tel = htmlspecialchars($_POST['tel'],ENT_QUOTES | ENT_HTML5); 9 $email = htmlspecialchars($_POST['email'],ENT_QUOTES | ENT_HTML5); 10 $body = htmlspecialchars($_POST['body'],ENT_QUOTES | ENT_HTML5); 11 12 $errors = []; 13 if(trim($name) === '' || trim($name) === " " && strlen($name) > 10){ 14 $errors["name"] = "氏名は必須入力です。10文字以内でご入力ください。"; 15 16 } 17 18 if(trim($kana) === '' || trim($kana) === " " && strlen($kana) > 10) { 19 $errors["kana"] = "フリガナは必須入力です。10文字以内でご入力ください。"; 20 } 21 22 if(count($errors) < 0) { 23 $_SESSION["name"] = $name; 24 $_SESSION["kana"] = $kana; 25 $_SESSION["email"] = $email; 26 $_SESSION["body"] = $body; 27 header('Location:confirm.php'); 28 } 29 30 31 32} 33 34 35?> 36 37<!DOCTYPE html> 38<html> 39<head> 40 <meta charset="UTF-8"> 41 <title>サーバーサイド基礎 課題form</title> 42 <link rel="stylesheet" type="text/css" href="style.css"> 43</head> 44<body> 45<?php include "header.php"; ?> 46<section> 47 <div id="contact_box"> 48 <h2><b>お問い合わせ</b></h2> 49 <form action="contact.php" method="post"> 50 <h3>下記の項目をご記入の上送信ボタンを押してください</h3> 51 <p>送信頂いた件につきましては、当社より折り返しご連絡を差し上げます。</p> 52 <p>なお、ご連絡までに、お時間を頂く場合もございますので予めご了承ください。</p> 53 <p><span class="required">*</span>は必須項目となります。</p> 54 <dl> 55 <dt><label for="name">氏名</label><span class="required">*</span></dt> 56 <p style="color:red;"><?php if (isset($name)) {echo $errors['name'];} ?></p> 57 <dd><input type="text" name="name" id="name" placeholder="山田太郎" ></dd> 58 <dt><label for="kana">フリガナ</label><span class="required">*</span></dt> 59 60 <dd><input type="text" name="kana" id="kana" placeholder="ヤマダタロウ" ></dd> 61 <dt><label for="tel">電話番号</label></dt> 62 63 <dd><input type="text" name="tel" id="tel" placeholder="09012345678" ></dd> 64 <dt><label for="email">メールアドレス</label><span class="required">*</span></dt> 65 66 <dd><input type="email" name="email" id="email" placeholder="test@test.co.jp" ></dd> 67 </dl> 68 <h3><label for="body">お問い合わせ内容をご記入ください<span class="required">*</span></label></h3> 69 70 <dl> 71 <dd><textarea name="body"></textarea></dd> 72 <dd><button type="submit" class="send" name="submit">送 信</button></dd> 73 </dl> 74 </form> 75 </div> 76</section> 77<?php include "footer.php"; ?> 78</body> 79</html> 80
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
teratailやGoogle等で検索したのですが解決に至らなかったためご質問しました。
どなたかご教授お願いいたします。
補足
特になし
> エラーが出てしまっています。
どの場所に、どのようなメッセージで(要約せずコピペしてください)エラーが出力されましたか?
回答3件
あなたの回答
tips
プレビュー