回答編集履歴

1

2015/02/06 02:54

投稿

raou
raou

スコア463

test CHANGED
@@ -3,8 +3,6 @@
3
3
 
4
4
 
5
5
  【PHPの場合】
6
-
7
- ```lang-php
8
6
 
9
7
  <?php
10
8
 
@@ -30,84 +28,78 @@
30
28
 
31
29
  if($_POST) {
32
30
 
33
- foreach($validation as $key => $value) {
31
+ foreach($validation as $key => $value) {
34
32
 
35
- if(!isset($_POST[$key])){
33
+ if(!isset($_POST[$key])){
36
34
 
37
- if( $value['required']) die("Field ".$key." is required");
35
+ if( $value['required']) die("Field ".$key." is required");
38
36
 
39
- }else{
37
+ }else{
40
38
 
41
- $length = strlen($_POST[$key]);
39
+ $length = strlen($_POST[$key]);
42
40
 
43
- if( $length < $value['minlength']) die("Field ".$key." too short");
41
+ if( $length < $value['minlength']) die("Field ".$key." too short");
44
42
 
45
- if( $length > $value['maxlength']) die("Field ".$key." too long");
43
+ if( $length > $value['maxlength']) die("Field ".$key." too long");
46
44
 
47
- if( !preg_match("(".$value['regex'].")",$_POST[$key])) die("Field ".$key." incorrect format");
45
+ if( !preg_match("(".$value['regex'].")",$_POST[$key])) die("Field ".$key." incorrect format");
48
46
 
49
- }
47
+ }
50
48
 
51
- }
49
+ }
52
50
 
53
51
  }
54
52
 
55
53
  ?>
56
54
 
57
- ```
58
-
59
55
 
60
56
 
61
57
  【javascriptの場合】
62
-
63
- ```lang-javascript
64
58
 
65
59
  <script type="text/javascript">
66
60
 
67
61
  (function(rules) {
68
62
 
69
- var die = function(str) {alert(str); return false;};
63
+ var die = function(str) {alert(str); return false;};
70
64
 
71
- document.getElementById('FormTest').onsubmit = function() {
65
+ document.getElementById('FormTest').onsubmit = function() {
72
66
 
73
- var elms = this.elements, i, it, r, s;
67
+ var elms = this.elements, i, it, r, s;
74
68
 
75
- for( i in rules) {
69
+ for( i in rules) {
76
70
 
77
- r = rules[i];
71
+ r = rules[i];
78
72
 
79
- it = elms.namedItem(i);
73
+ it = elms.namedItem(i);
80
74
 
81
- if( typeof it == "undefined") {
75
+ if( typeof it == "undefined") {
82
76
 
83
- if( r.required) return die("Field "+i+" is required");
77
+ if( r.required) return die("Field "+i+" is required");
84
78
 
85
- }
79
+ }
86
80
 
87
- else {
81
+ else {
88
82
 
89
- s = it.length;
83
+ s = it.length;
90
84
 
91
- if( s &lt; r.minlength) return die("Field "+i+" too short");
85
+ if( s < r.minlength) return die("Field "+i+" too short");
92
86
 
93
- if( s &gt; r.maxlength) return die("Field "+i+" too short");
87
+ if( s > r.maxlength) return die("Field "+i+" too short");
94
88
 
95
- if( !s.match(new RegExp(r.regex))) return die("Field "+i+" incorrect format");
89
+ if( !s.match(new RegExp(r.regex))) return die("Field "+i+" incorrect format");
96
90
 
97
- }
91
+ }
98
92
 
99
- }
93
+ }
100
94
 
101
- return true;
95
+ return true;
102
96
 
103
- };
97
+ };
104
98
 
105
99
  })(<?=json_encode($validation)?>);
106
100
 
107
101
  </script>
108
102
 
109
- ```
110
103
 
111
104
 
112
-
113
- 書いてある通り、規則設定を定義するのが一般的な考えで、そこから **json_encode($validation)** でエスケープ処理され、規則をJavaScript 環境へと通します。まだ検証コードを複製してPHPとJSで走らせる必要がありますが、少なくとも2箇所でコードを変更することなく更に規則を加えられます。
105
+ 書いてある通り、規則設定を定義するのが一般的な考えで、そこから json_encode($validation) でエスケープ処理され、規則をJavaScript 環境へと通します。まだ検証コードを複製してPHPとJSで走らせる必要がありますが、少なくとも2箇所でコードを変更することなく更に規則を加えられます。