回答編集履歴

1

コメントを受けて追記

2016/12/15 05:55

投稿

Y.H.
Y.H.

スコア7914

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