質問するログイン新規登録

回答編集履歴

1

コメントを受けて追記

2016/12/15 05:55

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -1,2 +1,42 @@
1
1
  どこでエラーメッセージを出力しているのでしょうか?
2
- MyValidatorクラスの$_errorsにセットしてるのだから、ここから取り出してhtmlとして出力する処理を書きましょう。
2
+ MyValidatorクラスの$_errorsにセットしてるのだから、ここから取り出してhtmlとして出力する処理を書きましょう。
3
+
4
+ ---
5
+ 追記:解決してますが追記です。
6
+
7
+ 処理の途中(特にクラスの中)でexitするのは悪手なのでやめた方がいいです。
8
+ これを踏まえて、```$this->_errors[] = "{$name}は必須入力です。";```に戻して(```v$->_erros```にエラーメッセージをセット)以下のようにするといいかもしれません。
9
+
10
+ ```PHP
11
+ <?php
12
+ // ・・・略・・・
13
+ if(isset($_POST['toukou'])){
14
+ $v = new MyValidator();
15
+ $v->requiredCheck($_POST['name'], '名前');
16
+ $v->requiredCheck($_POST['contents'], 'メッセージ');
17
+
18
+ if (count($v->$_errors) < 1) { // ファイルに書くのはエラーが無い時だけにする
19
+ $name = htmlspecialchars($_POST['name']);
20
+ // ・・・略・・・
21
+ fclose($fp);
22
+ }
23
+ }
24
+ // ・・・略・・・
25
+ ?>
26
+ <!DOCTYPE html>
27
+ <html lang="ja">
28
+ <!-- ・・・略・・・ -->
29
+ <p>名前は20文字以内、メッセージは50文字以内で入力してください</p>
30
+ <?php // エラーメッセージがある時はエラーメッセージを表示する。
31
+ if(isset($_POST['toukou'])){
32
+ if (count($v->$_errors) > 0) { // エラーメッセージが1件以上あるとき
33
+ // エラーメッセージ配列を'<br>'で連結し<p>タグ内に出力
34
+ echo '<p>' . implode('<br>', $v->errors) . '</p>';
35
+ }
36
+ }
37
+ ?>
38
+ <form action="" method="POST">
39
+ <!-- ・・・略・・・ -->
40
+ </html>
41
+
42
+ ```