質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

711閲覧

php バリデーションの処理について

yuki911

総合スコア27

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2020/02/22 13:47

編集2020/02/24 07:13

フォームのバリデーションでswitch文を使用してメールとパスワードチェックをしています。
blank_checkメソッドで未入力をチェックします。
フォームを未入力で送信したら、未入力と、パスワードの形式のエラーが出てきてしまいます。
未入力の場合はパスワードの形式をチェックせずに未入力のエラーだけを返したいのですが、
blank_checkでreturnしているのですが、処理が終わりません。
アドバイスいただけたら嬉しいです

php

1class Validation 2{ 3 4private function blank_check($value='', $colName='') 5 { 6 if($value === ''){ 7 $this->error[] = $colName . 'は入力必須です。'; 8 return true; 9 } 10 } 11 12public function check_type($value,$type) 13 { 14 switch($type){ 15 16 case "メールアドレス": 17 $this->blank_check($value,'メールアドレス'); 18 if(!filter_var($value,FILTER_VALIDATE_EMAIL)){ 19 $this->error[] = 'メールアドレスは正しい形式で入力してください。'; 20 } 21 break; 22 23 case "パスワード": 24 $this->blank_check($value,'パスワード'); 25 if(!preg_match('/\A(?=.*?[a-z])(?=.*?\d)[a-z\d]{6,10}+\z/i',$value)){ 26 $this->error[] = 'パスワードは半角英数字をそれぞれ1種類以上含む5文字以上10文字以下で入力してください。'; 27 } 28 break; 29 30 default: 31 break; 32 } 33}

php

1if(filter_input(INPUT_SERVER,'REQUEST_METHOD') === 'POST'){ 2 $mail = filter_input(INPUT_POST, 'mail'); 3 $pass = filter_input(INPUT_POST, 'pass'); 4 5 $vdt = new Validation; 6 $vdt->check_type($mail,'メールアドレス'); 7 $vdt->check_type($pass,'パスワード'); 8 $error = $vdt->get_error(); 9}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/22 14:47

> 未入力チェック関数があるのですが、フォームを未入力で送信したら、未入力と、パスワードの形式をのエラーが出てきてしまいます。 > returnを使っても表示されてしまうのでどうしたらいいでしょうか? ここら辺もう少し詳しく書いていただけませんか? よくわからないので。
yuki911

2020/02/22 14:55

すみません、変更しました。 未入力があったらパスワードの検証をせず、未入力と出したいのですが、、
guest

回答1

0

ベストアンサー

$vdt->check_type($mail,'メールアドレス');
の下に $vdt->get_error(); に値が入っているかいないかのチェックを入れてあげればパスワードチェックせずに処理終了できると思いますよ。

php

1if(filter_input(INPUT_SERVER,'REQUEST_METHOD') === 'POST'){ 2 $mail = filter_input(INPUT_POST, 'mail'); 3 $pass = filter_input(INPUT_POST, 'pass'); 4 5 $vdt = new Validation; 6 $vdt->check_type($mail,'メールアドレス'); 7 $error = $vdt->get_error(); 8 if(!empty($error)){ 9 // 処理終了!! 10 } 11 $vdt->check_type($pass,'パスワード'); 12 $error = $vdt->get_error(); 13}

投稿2020/02/23 10:15

編集2020/02/23 10:55
takanoriK

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問