phpでバリデーションチェックのクラスを作っています。
クラスは呼び出せてはいるのですが、フォームからPOSTされた値が間違えてもエラーが帰ってきません。
何か方法があれば教えていただけると助かります。
よろしくお願いします。
php
1//class.php 2 3<?php 4class ValidateForm 5{ 6 7 public static function check_input($value,$colName) 8 { 9 $error = []; 10 if($value = ''){ 11 $error[] = $colName . 'は入力必須です。'; 12 } 13 return $error; 14 } 15 16 public static function check_name($value,$colName,$length) 17 { 18 $error = []; 19 self::check_input($value,$colName); 20 $name = filter_input(INPUT_POST, $value); 21 $name_length = mb_strlen($name,"UTF-8"); 22 if($name_length > $length){ 23 $error[] = $colName . 'は'. $length . '文字以下で入力してください。'; 24 } 25 return $error; 26 } 27 28 public static function check_mail($value,$colName) 29 { 30 $error = []; 31 self::check_input($value,$colName); 32 $mail = filter_input(INPUT_POST, $value); 33 if(filter_var($mail,FILTER_VALIDATE_EMAIL) === false){ 34 $error[] = $colName . 'を正しい形式で入力してください。'; 35 } 36 return $error; 37 } 38 39 public static function check_pass($value,$colName) 40 { 41 $error = []; 42 self::check_input($value,$colName); 43 $pass = filter_input(INPUT_POST, $value); 44 if(preg_match('/\A(?=.*?[a-z])(?=.*?\d)[a-z\d]{6,10}+\z/i',$pass)){ 45 $error[] = $colName . 'は半角英数字をそれぞれ1種類以上含む6文字以上10文字以下で入力してください。'; 46 } 47 return $error; 48 } 49} 50
php
1//index.php 2 3require 'class.php'; 4$error = []; 5 6if ($_SERVER['REQUEST_METHOD'] === 'POST') { 7 ValidateForm::check_name($_POST['name'],'名前',6); 8 ValidateForm::check_mail($_POST['mail'],'メール'); 9 ValidateForm::check_pass($_POST['pass'],'パスワード'); 10} 11 ?> 12 13 <!DOCTYPE html> 14 <html lang="ja" dir="ltr"> 15 <head> 16 <meta charset="utf-8"> 17 <title>aaa</title> 18 </head> 19 <body> 20 <?php if(count($error) > 0) : ?> 21 <?php foreach($error as $e) : ?> 22 <p><?php echo $e; ?></p> 23 <?php endforeach; ?> 24 <?php endif; ?> 25 <form action="" method="post"> 26 <p> 27 <label for="name">ユーザー名</label> 28 <input type="text" name="name" id="name"> 29 </p> 30 <p> 31 <label for="mail">メールアドレス</label> 32 <input type="email" name="mail" id="mail"> 33 </p> 34 <p> 35 <label for="pass">パスワード</label> 36 <input type="password" name="pass" id="password"> 37 </p> 38 <p> 39 <button type="submit">新規登録</button> 40 </p> 41 </form> 42 </body> 43 </html>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/17 08:00
2020/02/17 08:49
2020/02/17 08:55
2020/02/17 15:53
2020/02/17 22:23
2020/02/18 01:48
2020/02/18 02:01
2020/02/18 02:05
2020/02/18 02:15
2020/02/18 02:51
2020/02/18 02:56
2020/02/18 02:58
2020/02/18 03:02