質問編集履歴

3

修正

2019/09/03 00:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -252,7 +252,7 @@
252
252
 
253
253
  </p>
254
254
 
255
- <div class="g-recaptcha" data-sitekey="6LeXG7YUAAAAAL1gAhvjcmTuYI4sA8rMOCAGmSIM"></div>
255
+ <div class="g-recaptcha" data-sitekey="sitekey"></div>
256
256
 
257
257
 
258
258
 

2

コードの追記

2019/09/03 00:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -17,3 +17,261 @@
17
17
  **追記**
18
18
 
19
19
  正規表現のパターンは[こちら](https://qiita.com/mpyw/items/886218e7b418dfed254b)の記事を参考にしました。
20
+
21
+
22
+
23
+ 現状、パスワードに英字と数字両方を入力しても正規表現パターンにマッチしないといった状態です。
24
+
25
+ 以下は、バリデーションチェックを行っているコードの詳細になります。
26
+
27
+ ```
28
+
29
+ <?php
30
+
31
+
32
+
33
+ $errors = [];
34
+
35
+ $nick_name = filter_input(INPUT_POST,'nick_name');
36
+
37
+ $nick_name = trim(mb_convert_kana($nick_name,'s','UTF-8'));
38
+
39
+
40
+
41
+ $email = filter_input(INPUT_POST,'email');
42
+
43
+ $email = trim(mb_convert_kana($email,'s','UTF-8'));
44
+
45
+ // var_dump($email);
46
+
47
+ $password = filter_input(INPUT_POST,'password');
48
+
49
+ $password_check = filter_input(INPUT_POST,'password_check');
50
+
51
+ $family_name_kanji = filter_input(INPUT_POST,'family_name_kanji');
52
+
53
+ $family_name_kanji = trim(mb_convert_kana($family_name_kanji,'s','UTF-8'));
54
+
55
+
56
+
57
+ $first_name_kanji = filter_input(INPUT_POST,'first_name_kanji');
58
+
59
+ $first_name_kanji = trim(mb_convert_kana($first_name_kanji,'s','UTF-8'));
60
+
61
+
62
+
63
+ $family_name_kana = filter_input(INPUT_POST,'family_name_kana');
64
+
65
+ $family_name_kana = trim(mb_convert_kana($family_name_kana,'s','UTF-8'));
66
+
67
+
68
+
69
+ $first_name_kana = filter_input(INPUT_POST,'first_name_kana');
70
+
71
+ $first_name_kana = trim(mb_convert_kana($first_name_kana,'s','UTF-8'));
72
+
73
+
74
+
75
+ $year = filter_input(INPUT_POST,'year');
76
+
77
+ $month = filter_input(INPUT_POST,'month');
78
+
79
+ $day = filter_input(INPUT_POST,'day');
80
+
81
+
82
+
83
+ if(!$nick_name){
84
+
85
+ $errors['empty_nick_name'] = 'ニックネームが入力されていません';
86
+
87
+ }else{
88
+
89
+ if(mb_strlen($nick_name,'UTF-8') > 20){
90
+
91
+ $errors['over_nick_name'] = 'ニックネームは20文字以内で入力してください';
92
+
93
+ }
94
+
95
+ }
96
+
97
+
98
+
99
+ if(!$email){
100
+
101
+ $errors['empty_email'] = 'メールアドレスが入力されていません';
102
+
103
+ }else{
104
+
105
+ if(!filter_var($email,FILTER_VALIDATE_EMAIL)){
106
+
107
+ $errors['email_format_err'] = 'メールアドレスの形式が正しくありません';
108
+
109
+ }
110
+
111
+ }
112
+
113
+
114
+
115
+ if(!$password){
116
+
117
+ $errors['empty_password'] = 'パスワードを入力してください';
118
+
119
+ }else{
120
+
121
+ if(mb_strlen($password,'UTF-8') < 7 || mb_strlen($password,'UTF-8') > 128 ){
122
+
123
+ $errors['less_password'] = 'パスワードは7文字以上128文字以下で入力してください';
124
+
125
+ }
126
+
127
+
128
+
129
+ if(!preg_match('/\A(?=.*?[a-z])(?=.*?\d)[a-z\d]\z/i',$password)){
130
+
131
+
132
+
133
+ $errors['not_match_password'] = '英字と数字両方を含むパスワードを入力してください';
134
+
135
+
136
+
137
+ }
138
+
139
+
140
+
141
+ }
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+ foreach($errors as $err){
152
+
153
+ echo $err . "<br>";
154
+
155
+ }
156
+
157
+
158
+
159
+ ```
160
+
161
+ html部分は以下になります。
162
+
163
+ ```
164
+
165
+ <!DOCTYPE html>
166
+
167
+ <html lang="ja">
168
+
169
+ <head>
170
+
171
+ <meta charset="UTF-8">
172
+
173
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
174
+
175
+ <title>test</title>
176
+
177
+ <script src="https://www.google.com/recaptcha/api.js"></script>
178
+
179
+ </head>
180
+
181
+ <body>
182
+
183
+ <h1>会員情報入力</h1>
184
+
185
+ <form action="form_check1.php" method="post" id="user_register_form">
186
+
187
+ <p>ニックネーム
188
+
189
+ <input type="text" name="nick_name" placeholder="例)太郎">
190
+
191
+ </p>
192
+
193
+ <p>
194
+
195
+ メールアドレス
196
+
197
+ <input type="email" name="email" placeholder="PC・携帯どちらでも可">
198
+
199
+ </p>
200
+
201
+ <p>
202
+
203
+ パスワード
204
+
205
+ <input type="password" name="password" placeholder="7文字以上">
206
+
207
+ </p>
208
+
209
+ <p>
210
+
211
+ パスワード(確認):
212
+
213
+ <input type="password" name="check_password" placeholder="7文字以上">
214
+
215
+ </p>
216
+
217
+ <p>
218
+
219
+ お名前(全角)
220
+
221
+ <input type="text" name="family_name_kanji" placeholder="例)山田">
222
+
223
+ <input type="text" name="first_name_kanji" placeholder="例)太郎">
224
+
225
+ </p>
226
+
227
+ <p>
228
+
229
+ お名前カナ(全角)
230
+
231
+ <input type="text" name="family_name_kana" placeholder="例)ヤマダ">
232
+
233
+ <input type="text" name="first_name_kana" placeholder="例)タロウ">
234
+
235
+ </p>
236
+
237
+ <p>
238
+
239
+ 生年月日
240
+
241
+ <select name="year" id="year_id">
242
+
243
+ </select>
244
+
245
+ <select name="month" id="month_id">
246
+
247
+ </select>
248
+
249
+ <select name="day" id="day_id">
250
+
251
+ </select>
252
+
253
+ </p>
254
+
255
+ <div class="g-recaptcha" data-sitekey="6LeXG7YUAAAAAL1gAhvjcmTuYI4sA8rMOCAGmSIM"></div>
256
+
257
+
258
+
259
+ <input type="submit" value="送信">
260
+
261
+ </form>
262
+
263
+
264
+
265
+ </body>
266
+
267
+
268
+
269
+ <!-- <script src="ja/validation.js"></script> -->
270
+
271
+
272
+
273
+ </html>
274
+
275
+
276
+
277
+ ```

1

追記及び修正

2019/09/03 00:42

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,19 @@
1
- 正規表現のパターンで英字数字が少なくても一文字以上含まれていることだけを検証したい場合は、以下のパターンで正しいでしょうか?
1
+ PHPの正規表現のパターンで英字数字が少なくても一文字以上含まれていることだけを検証したい場合は、以下のパターンで正しいでしょうか?
2
2
 
3
3
  ```
4
4
 
5
- '/\A(?=.*?[a-z])(?=.*?\d)[a-z\d]\z/i'
5
+ if(!preg_match('/\A(?=.*?[a-z])(?=.*?\d)[a-z\d]\z/i',$password)){
6
+
7
+
8
+
9
+ $errors['not_match_password'] = '英字と数字両方を含むパスワードを入力してください';
10
+
11
+
12
+
13
+ }
6
14
 
7
15
  ```
16
+
17
+ **追記**
18
+
19
+ 正規表現のパターンは[こちら](https://qiita.com/mpyw/items/886218e7b418dfed254b)の記事を参考にしました。