質問編集履歴

16

情報の変更

2021/04/21 13:06

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -268,6 +268,8 @@
268
268
 
269
269
  ### 情報
270
270
 
271
+ 皆様、貴重なお時間を頂きこの質問に回答してくださり、誠にありがとうございました。
272
+
273
+ 今回解決することはできませんでしたが、質問の仕方に対する指摘等を、大切なお時間を割いて回答していただき非常に感謝しております。
274
+
271
- もう回答は打ち切たいいま
275
+ お忙しい中あうございました
272
-
273
- 私自身さらに勉強し、そこでつまずいたところを再度質問したいと思いますのでまたよろしくお願いいたします。

15

一部の編集

2021/04/21 13:06

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -266,54 +266,8 @@
266
266
 
267
267
  ```
268
268
 
269
- ※このコードでも質問の件は改善されていません。
270
-
271
269
  ### 情報
272
270
 
273
- データベース:
274
-
275
-
276
-
277
- |サーバ|バージョン|文字セット|データ保存位置|
278
-
279
- |:--|:--:|--:|--:|
280
-
281
- |MySQL|5.7.27|UTF-8 Unicode|データベース:data⇒テーブル: user_tb|
282
-
283
-
284
-
285
- passwodカラム:
286
-
287
-
288
-
289
- |データ型|照合順序|
290
-
291
- |:--|:--:|
292
-
293
- |text|utf8_general_ci|
294
-
295
-
296
-
297
- |Webサーバー|apacheバージョン|phpバージョン|
298
-
299
- |:--|:--:|--:|
300
-
301
- |Apache|2.4.6|PHP7.3.8|
302
-
303
-
304
-
305
- 実行環境
306
-
307
- pubilic/account/
308
-
309
- (あまり関係ないかもしれませんがaccountのサブドメインでやっています。)
310
-
311
- signup.phpとlogin.phpは同ディレクトリです。
312
-
313
-
314
-
315
- さらにほしい情報がありましたらコメントしてください。
316
-
317
- 出来る限る早く追記します。
318
-
319
- よろしくお願いいたします。
271
+ もう回答は打ち切りたと思います。
272
+
273
+ 私自身さらに勉強し、そこでつまずいたところを再度質問したいと思いますのでまたよろしくお願いいたします。

14

一部の編集

2019/11/15 08:27

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -14,14 +14,6 @@
14
14
 
15
15
  //~~~省略~~~
16
16
 
17
- //$name = $_POST['name'];
18
-
19
- //$email = $_POST['email'];
20
-
21
- //$password = $_POST['password'];
22
-
23
- //$password = $_POST['password2'];
24
-
25
17
  $emails = "";
26
18
 
27
19
  $userids = "";
@@ -248,7 +240,9 @@
248
240
 
249
241
  exit('pass');
250
242
 
243
+ }
244
+
251
- }exit($_POST['pass'].":". $result[0]['password']);
245
+ //exit($_POST['pass'].":". $result[0]['password']);
252
246
 
253
247
  if (password_verify($_POST['pass'], $result[0]['password'])) {
254
248
 

13

さらにインデント

2019/11/15 07:29

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -14,13 +14,13 @@
14
14
 
15
15
  //~~~省略~~~
16
16
 
17
- $name = $_POST['name'];
17
+ //$name = $_POST['name'];
18
-
18
+
19
- $email = $_POST['email'];
19
+ //$email = $_POST['email'];
20
-
20
+
21
- $password = $_POST['password'];
21
+ //$password = $_POST['password'];
22
-
22
+
23
- $password = $_POST['password2'];
23
+ //$password = $_POST['password2'];
24
24
 
25
25
  $emails = "";
26
26
 
@@ -42,9 +42,9 @@
42
42
 
43
43
  while($row = $stmt -> fetch(PDO::FETCH_ASSOC)) {
44
44
 
45
-  $emails .= "[".$row["email"]."]";
45
+  $emails .= "[". $row["email"] ."]";
46
-
46
+
47
-  $userids .= "[".$row["userid"]."]";
47
+  $userids .= "[". $row["userid"] ."]";
48
48
 
49
49
  }
50
50
 
@@ -52,7 +52,7 @@
52
52
 
53
53
   $len="";
54
54
 
55
-  for( $i=0; $i<10; $i++ ){
55
+  for( $i = 0; $i < 10; $i++ ){
56
56
 
57
57
    $len.=substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 10);
58
58
 
@@ -66,21 +66,21 @@
66
66
 
67
67
  $kuserid=ra();
68
68
 
69
- if(strpos($userids,$kuserid) !== false){
69
+ if(strpos( $userids , $kuserid ) !== false){
70
70
 
71
71
  newusers();
72
72
 
73
- }else {
73
+ } else {
74
74
 
75
75
  try {
76
76
 
77
- $pdo = new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
77
+ $pdo = new PDO( 'mysql:host=example.jp;dbname=user_data;charset=utf8' , 'user' , 'password',
78
78
 
79
79
  array(PDO::ATTR_EMULATE_PREPARES => false));
80
80
 
81
- } catch (PDOException $e){
81
+ } catch ( PDOException $e ){
82
-
82
+
83
- exit("sql");
83
+ exit( "sql" );
84
84
 
85
85
  }
86
86
 
@@ -92,7 +92,7 @@
92
92
 
93
93
  $pass2 = $_POST['password2'];
94
94
 
95
- $niti=date("Y/m/d H:i:s");
95
+ $niti=date( "Y/m/d H:i:s" );
96
96
 
97
97
  $stmt = $pdo->prepare("INSERT INTO user_tb (name, password,password2,userid,createddate,email) VALUES (:name, :password,:password2,:userid,:createddate,:email)");
98
98
 
@@ -126,19 +126,19 @@
126
126
 
127
127
  $email = $_POST['email'];
128
128
 
129
- if(strpos($emails,$email) !== false){
129
+ if(strpos( $emails , $email ) !== false){
130
130
 
131
131
  exit( "emailerror" );
132
132
 
133
133
  }else {
134
134
 
135
- newusers($userids);
135
+ newusers( $userids );
136
136
 
137
137
  }
138
138
 
139
139
  }
140
140
 
141
- fu001($emails);
141
+ fu001( $emails );
142
142
 
143
143
  //~~~省略~~~
144
144
 
@@ -162,7 +162,7 @@
162
162
 
163
163
  $ivs = array();
164
164
 
165
- $pdo = new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
165
+ $pdo = new PDO( 'mysql:host=example.jp;dbname=user_data;charset=utf8' , 'user' , 'password' ,
166
166
 
167
167
  array(PDO::ATTR_EMULATE_PREPARES=>false));
168
168
 
@@ -184,13 +184,13 @@
184
184
 
185
185
  $email = $_POST['mail'];
186
186
 
187
- if( in_array($email, $emails) ){}else{exit("error");}//メールアドレスが存在するかどうか
187
+ if( in_array( $email, $emails ) ){}else{ exit("error"); }//メールアドレスが存在するかどうか
188
188
 
189
189
  $pass = $_POST['pass'];
190
190
 
191
191
  $mi = count($emails);
192
192
 
193
- for( $i=0; $i<$mi; $i++ ){
193
+ for( $i = 0; $i < $mi; $i++ ){
194
194
 
195
195
  if( $emails[$i] === $email ){
196
196
 

12

見た目の編集

2019/11/15 07:09

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -280,16 +280,18 @@
280
280
 
281
281
 
282
282
 
283
- サーバ: MySQL
284
-
285
- サーババージョン: 5.7.27
283
+ |サーバ|バージョン|文字セット|データ保存位置|
286
-
284
+
287
- サーバ文字セット: UTF-8 Unicode
285
+ |:--|:--:|--:|--:|
288
-
286
+
289
- アカウントデータ保存:データベース:data⇒テーブル: user_tb
287
+ |MySQL|5.7.27|UTF-8 Unicode|データベース:data⇒テーブル: user_tb|
288
+
289
+
290
290
 
291
291
  passwodカラム:
292
292
 
293
+
294
+
293
295
  |データ型|照合順序|
294
296
 
295
297
  |:--|:--:|
@@ -298,11 +300,13 @@
298
300
 
299
301
 
300
302
 
301
- WEBサーバー:Apache
302
-
303
- Apacheバージョン:2.4.6
303
+ |Webサーバー|apacheバージョン|phpバージョン|
304
+
304
-
305
+ |:--|:--:|--:|
306
+
305
- phpバージョン:PHP7.3.8
307
+ |Apache|2.4.6|PHP7.3.8|
308
+
309
+
306
310
 
307
311
  実行環境
308
312
 
@@ -317,3 +321,5 @@
317
321
  さらにほしい情報がありましたらコメントしてください。
318
322
 
319
323
  出来る限る早く追記します。
324
+
325
+ よろしくお願いいたします。

11

情報の追加

2019/11/15 06:59

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -288,6 +288,14 @@
288
288
 
289
289
  アカウントデータ保存:データベース:data⇒テーブル: user_tb
290
290
 
291
+ passwodカラム:
292
+
293
+ |データ型|照合順序|
294
+
295
+ |:--|:--:|
296
+
297
+ |text|utf8_general_ci|
298
+
291
299
 
292
300
 
293
301
  WEBサーバー:Apache

10

一部の編集

2019/11/15 06:52

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -212,18 +212,10 @@
212
212
 
213
213
  ```
214
214
 
215
- ※質問に関係のないことは情報追加・修正依頼に書かないでください。
216
-
217
215
  ※質問に関係ない部分は一部省略しているほか、一部実際と異なりますが質問のコードとは無関係です。
218
216
 
219
217
  何回アカウントを作り直してもfalseになってしまいます。
220
218
 
221
- 疑うところとしては、signup.phpのハッシュ化する部分です。ハッシュ化する位置が関係があるような気もしますが、問題がわかる方は回答お願いいたします。
222
-
223
- (phpバージョン:PHP7.3.8)(実際のサーバーで動作させています。)
224
-
225
-
226
-
227
219
  ### 追記1
228
220
 
229
221
  回答者からいただいたソースコードでlogin.phpのコードを改めました。
@@ -302,13 +294,15 @@
302
294
 
303
295
  Apacheバージョン:2.4.6
304
296
 
297
+ phpバージョン:PHP7.3.8
298
+
305
299
  実行環境
306
300
 
307
301
  pubilic/account/
308
302
 
309
- (あまり関係ないかもしれませんがaccountのサブドメインやっています。)
303
+ (あまり関係ないかもしれませんがaccountのサブドメインやっています。)
310
-
304
+
311
- signup.phpとlogin.phpは同ディレクトリにあります。
305
+ signup.phpとlogin.phpは同ディレクトリす。
312
306
 
313
307
 
314
308
 

9

情報の追記

2019/11/15 06:47

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -284,18 +284,18 @@
284
284
 
285
285
  ### 情報
286
286
 
287
- データベースサーバー:
287
+ データベース:
288
-
289
-
290
-
288
+
289
+
290
+
291
- サーバの種類: MySQL
291
+ サーバ: MySQL
292
292
 
293
293
  サーバのバージョン: 5.7.27
294
294
 
295
- プロトコル バージョン: 10
296
-
297
295
  サーバ文字セット: UTF-8 Unicode
298
296
 
297
+ アカウントデータ保存:データベース:data⇒テーブル: user_tb
298
+
299
299
 
300
300
 
301
301
  WEBサーバー:Apache

8

サーバー情報の追記

2019/11/14 12:26

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -282,14 +282,36 @@
282
282
 
283
283
  ※このコードでも質問の件は改善されていません。
284
284
 
285
- ### 追記2
285
+ ### 情報
286
+
286
-
287
+ データベースサーバー:
288
+
289
+
290
+
291
+ サーバの種類: MySQL
292
+
293
+ サーバのバージョン: 5.7.27
294
+
295
+ プロトコル バージョン: 10
296
+
297
+ サーバ文字セット: UTF-8 Unicode
298
+
299
+
300
+
301
+ WEBサーバー:Apache
302
+
303
+ Apacheバージョン:2.4.6
304
+
305
+ 実行環境
306
+
287
- 11/13/21:37:
307
+ pubilic/account/
288
-
308
+
289
- やってほしことだけを記載た丸投げ質問と思た理由を回答していただきありがとうございます。
309
+ (あまり関係なかもれませんがaccountサブドメインやっています。)
310
+
290
-
311
+ signup.phpとlogin.phpは同ディレクトリにあります。
291
-
292
-
312
+
313
+
314
+
293
- 11/12/19:07:
315
+ さらにほしい情報がありましたらコメントしてください。
294
-
316
+
295
- password_verify($pass,$passs[$i])の$passと$passs[$i]の中身の確認は行っています。
317
+ 出来る限る早く追記します。

7

追記の追記

2019/11/14 12:23

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -286,7 +286,7 @@
286
286
 
287
287
  11/13/21:37:
288
288
 
289
- やってほしいことだけを記載した丸投げの質問と思うならば、なぜそうおもったのか。改善してほしいところを教えてくださ。お願いします。
289
+ やってほしいことだけを記載した丸投げの質問と思った理由を回答していただきありがうございます。
290
290
 
291
291
 
292
292
 

6

追記

2019/11/14 12:09

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -286,7 +286,7 @@
286
286
 
287
287
  11/13/21:37:
288
288
 
289
- やってほしいことだけを記載した丸投げの質問と思うならば、なぜそうおもったのか。改善してほしいところを教えてください。
289
+ やってほしいことだけを記載した丸投げの質問と思うならば、なぜそうおもったのか。改善してほしいところを教えてください。お願いします。
290
290
 
291
291
 
292
292
 

5

一部の編集

2019/11/13 21:58

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -222,8 +222,74 @@
222
222
 
223
223
  (phpバージョン:PHP7.3.8)(実際のサーバーで動作させています。)
224
224
 
225
+
226
+
225
- ### 追記
227
+ ### 追記1
228
+
226
-
229
+ 回答者からいただいたソースコードでlogin.phpのコードを改めました。
230
+
227
- 19:07:
231
+ ```php
232
+
233
+ try {
234
+
235
+ $pdo = new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
236
+
237
+ array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
238
+
239
+ );
240
+
241
+ $stmt = $pdo->prepare('SELECT userid, email, password FROM user_tb WHERE email = :email');
242
+
243
+ $stmt->bindValue(':email', $_POST['mail']);
244
+
245
+ $stmt->execute();
246
+
247
+ $result = $stmt->fetchAll();
248
+
249
+ if ($result === false) {
250
+
251
+ exit('fetch error');
252
+
253
+ }
254
+
255
+ if ($resul ===array()){
256
+
257
+ exit('pass');
258
+
259
+ }exit($_POST['pass'].":". $result[0]['password']);
260
+
261
+ if (password_verify($_POST['pass'], $result[0]['password'])) {
262
+
263
+ $_SESSION['id'] = $result[0]['userid'];
264
+
265
+ exit('login');
266
+
267
+ }
268
+
269
+ else {
270
+
271
+ exit('pass');
272
+
273
+ }
274
+
275
+ } catch (PDOException $e) {
276
+
277
+ exit('sql:' . $e->message);
278
+
279
+ }
280
+
281
+ ```
282
+
283
+ ※このコードでも質問の件は改善されていません。
284
+
285
+ ### 追記2
286
+
287
+ 11/13/21:37:
288
+
289
+ やってほしいことだけを記載した丸投げの質問と思うならば、なぜそうおもったのか。改善してほしいところを教えてください。
290
+
291
+
292
+
293
+ 11/12/19:07:
228
294
 
229
295
  password_verify($pass,$passs[$i])の$passと$passs[$i]の中身の確認は行っています。

4

もう少しインデント

2019/11/13 12:44

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -14,13 +14,13 @@
14
14
 
15
15
  //~~~省略~~~
16
16
 
17
- $name=$_POST['name'];
17
+ $name = $_POST['name'];
18
-
18
+
19
- $email=$_POST['email'];
19
+ $email = $_POST['email'];
20
-
20
+
21
- $password=$_POST['password'];
21
+ $password = $_POST['password'];
22
-
22
+
23
- $password=$_POST['password2'];
23
+ $password = $_POST['password2'];
24
24
 
25
25
  $emails = "";
26
26
 
@@ -52,7 +52,7 @@
52
52
 
53
53
   $len="";
54
54
 
55
-  for($i=0;$i<10;$i++){
55
+  for( $i=0; $i<10; $i++ ){
56
56
 
57
57
    $len.=substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 10);
58
58
 
@@ -62,7 +62,7 @@
62
62
 
63
63
  }
64
64
 
65
- function newusers($userids){
65
+ function newusers( $userids ) {
66
66
 
67
67
  $kuserid=ra();
68
68
 
@@ -70,11 +70,11 @@
70
70
 
71
71
  newusers();
72
72
 
73
- }else{
73
+ }else {
74
74
 
75
75
  try {
76
76
 
77
- $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
77
+ $pdo = new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
78
78
 
79
79
  array(PDO::ATTR_EMULATE_PREPARES => false));
80
80
 
@@ -84,17 +84,17 @@
84
84
 
85
85
  }
86
86
 
87
- $name=$_POST['name'];
87
+ $name = $_POST['name'];
88
-
88
+
89
- $email=$_POST['email'];
89
+ $email = $_POST['email'];
90
-
90
+
91
- $pass1=$_POST['password'];
91
+ $pass1 = $_POST['password'];
92
-
92
+
93
- $pass2=$_POST['password2'];
93
+ $pass2 = $_POST['password2'];
94
94
 
95
95
  $niti=date("Y/m/d H:i:s");
96
96
 
97
- $stmt=$pdo->prepare("INSERT INTO user_tb (name, password,password2,userid,createddate,email) VALUES (:name, :password,:password2,:userid,:createddate,:email)");
97
+ $stmt = $pdo->prepare("INSERT INTO user_tb (name, password,password2,userid,createddate,email) VALUES (:name, :password,:password2,:userid,:createddate,:email)");
98
98
 
99
99
  $pass1s=password_hash($pass1, PASSWORD_DEFAULT);//ここでハッシュ化
100
100
 
@@ -114,7 +114,7 @@
114
114
 
115
115
  $stmt->execute();
116
116
 
117
- $_SESSION['id']=$kuserid;
117
+ $_SESSION['id'] = $kuserid;
118
118
 
119
119
  exit("ok");
120
120
 
@@ -122,15 +122,15 @@
122
122
 
123
123
  }
124
124
 
125
- function fu001($emails){
125
+ function fu001 ( $emails ) {
126
-
126
+
127
- $email=$_POST['email'];
127
+ $email = $_POST['email'];
128
128
 
129
129
  if(strpos($emails,$email) !== false){
130
130
 
131
- exit("emailerror");
131
+ exit( "emailerror" );
132
-
132
+
133
- }else{
133
+ }else {
134
134
 
135
135
  newusers($userids);
136
136
 
@@ -154,49 +154,49 @@
154
154
 
155
155
  try{
156
156
 
157
- $emails=array();
157
+ $emails = array();
158
-
158
+
159
- $passs=array();
159
+ $passs = array();
160
-
160
+
161
- $userids=array();
161
+ $userids = array();
162
-
162
+
163
- $ivs=array();
163
+ $ivs = array();
164
-
164
+
165
- $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
165
+ $pdo = new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
166
166
 
167
167
  array(PDO::ATTR_EMULATE_PREPARES=>false));
168
168
 
169
- }catch(PDOException $e){
169
+ }catch( PDOException $e ) {
170
170
 
171
171
  exit('sql');
172
172
 
173
173
  }
174
174
 
175
- $stmt=$pdo->query("SELECT * FROM user_tb");
175
+ $stmt = $pdo->query("SELECT * FROM user_tb");
176
176
 
177
177
  while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){
178
178
 
179
- $emails[]=$row["email"];
179
+ $emails[] = $row["email"];
180
-
180
+
181
- $passs[]=$row["password"];
181
+ $passs[] = $row["password"];
182
-
182
+
183
- $userids[]=$row["userid"];}
183
+ $userids[] = $row["userid"];}
184
-
184
+
185
- $email=$_POST['mail'];
185
+ $email = $_POST['mail'];
186
-
186
+
187
- if(in_array($email, $emails)){}else{exit("error");}//メールアドレスが存在するかどうか
187
+ if( in_array($email, $emails) ){}else{exit("error");}//メールアドレスが存在するかどうか
188
-
188
+
189
- $pass=$_POST['pass'];
189
+ $pass = $_POST['pass'];
190
-
190
+
191
- $mi=count($emails);
191
+ $mi = count($emails);
192
-
192
+
193
- for($i=0;$i<$mi;$i++){
193
+ for( $i=0; $i<$mi; $i++ ){
194
-
194
+
195
- if($emails[$i]===$email){
195
+ if( $emails[$i] === $email ){
196
-
196
+
197
- if(password_verify($pass,$passs[$i])){//ここで確認
197
+ if( password_verify( $pass , $passs[$i]) ) {//ここで確認
198
-
198
+
199
- $_SESSION['id']=$userids[$i];
199
+ $_SESSION['id'] = $userids[$i];
200
200
 
201
201
  exit("login");
202
202
 

3

インデント等の追加

2019/11/13 08:36

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -14,11 +14,17 @@
14
14
 
15
15
  //~~~省略~~~
16
16
 
17
+ $name=$_POST['name'];
18
+
17
- $name=$_POST['name'];$email=$_POST['email'];
19
+ $email=$_POST['email'];
20
+
18
-
21
+ $password=$_POST['password'];
22
+
19
- $password=$_POST['password'];$password=$_POST['password2'];
23
+ $password=$_POST['password2'];
24
+
20
-
25
+ $emails = "";
26
+
21
- $emails = "";$userids = "";
27
+ $userids = "";
22
28
 
23
29
  try {
24
30
 
@@ -26,23 +32,35 @@
26
32
 
27
33
  array(PDO::ATTR_EMULATE_PREPARES => false));
28
34
 
29
- }catch(PDOException $e){exit("spl");}
35
+ }catch(PDOException $e){
36
+
37
+  exit("spl");
38
+
39
+ }
30
40
 
31
41
  $stmt = $pdo->query("SELECT * FROM user_tb");
32
42
 
33
43
  while($row = $stmt -> fetch(PDO::FETCH_ASSOC)) {
34
44
 
35
- $emails .= "[".$row["email"]."]";
45
+  $emails .= "[".$row["email"]."]";
36
-
46
+
37
- $userids .= "[".$row["userid"]."]";
47
+  $userids .= "[".$row["userid"]."]";
38
-
48
+
39
- }
49
+ }
50
+
40
-
51
+ function ra(){
52
+
41
- function ra(){$len="";
53
+  $len="";
54
+
42
-
55
+  for($i=0;$i<10;$i++){
56
+
43
- for($i=0;$i<10;$i++){$len.=substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 10);}
57
+   $len.=substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 10);
58
+
44
-
59
+  }
60
+
45
- return $len;}
61
+  return $len;
62
+
63
+ }
46
64
 
47
65
  function newusers($userids){
48
66
 
@@ -56,7 +74,7 @@
56
74
 
57
75
  try {
58
76
 
59
- $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
77
+ $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
60
78
 
61
79
  array(PDO::ATTR_EMULATE_PREPARES => false));
62
80
 
@@ -78,9 +96,9 @@
78
96
 
79
97
  $stmt=$pdo->prepare("INSERT INTO user_tb (name, password,password2,userid,createddate,email) VALUES (:name, :password,:password2,:userid,:createddate,:email)");
80
98
 
81
- $pass1s=password_hash($pass1, PASSWORD_DEFAULT);//ここでハッシュ化
99
+ $pass1s=password_hash($pass1, PASSWORD_DEFAULT);//ここでハッシュ化
82
-
100
+
83
- $pass2s=password_hash($pass2, PASSWORD_DEFAULT);//ここでハッシュ化
101
+ $pass2s=password_hash($pass2, PASSWORD_DEFAULT);//ここでハッシュ化
84
102
 
85
103
  $stmt->bindParam(':name', $name, PDO::PARAM_STR);
86
104
 
@@ -104,7 +122,21 @@
104
122
 
105
123
  }
106
124
 
125
+ function fu001($emails){
126
+
127
+ $email=$_POST['email'];
128
+
107
- function fu001($emails){$email=$_POST['email'];if(strpos($emails,$email) !== false){exit("emailerror");}else{newusers($userids);}}
129
+ if(strpos($emails,$email) !== false){
130
+
131
+ exit("emailerror");
132
+
133
+ }else{
134
+
135
+ newusers($userids);
136
+
137
+ }
138
+
139
+ }
108
140
 
109
141
  fu001($emails);
110
142
 
@@ -120,23 +152,39 @@
120
152
 
121
153
  ```php
122
154
 
155
+ try{
156
+
123
- if(isset($_POST["mail"])){}else{exit("error");}
157
+ $emails=array();
158
+
124
-
159
+ $passs=array();
160
+
161
+ $userids=array();
162
+
163
+ $ivs=array();
164
+
125
- try{$emails=array();$passs=array();$userids=array();$ivs=array();$pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
165
+ $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
126
166
 
127
167
  array(PDO::ATTR_EMULATE_PREPARES=>false));
128
168
 
129
- }catch(PDOException $e){exit('sql');}
169
+ }catch(PDOException $e){
170
+
130
-
171
+ exit('sql');
172
+
173
+ }
174
+
131
- $stmt = $pdo->query("SELECT * FROM user_tb");
175
+ $stmt=$pdo->query("SELECT * FROM user_tb");
132
176
 
133
177
  while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){
134
178
 
179
+ $emails[]=$row["email"];
180
+
181
+ $passs[]=$row["password"];
182
+
135
- $emails[]=$row["email"];$passs[]=$row["password"];$userids[]=$row["userid"];}
183
+ $userids[]=$row["userid"];}
136
184
 
137
185
  $email=$_POST['mail'];
138
186
 
139
- if(in_array($email, $emails)){}else{exit("error");}
187
+ if(in_array($email, $emails)){}else{exit("error");}//メールアドレスが存在するかどうか
140
188
 
141
189
  $pass=$_POST['pass'];
142
190
 
@@ -144,21 +192,23 @@
144
192
 
145
193
  for($i=0;$i<$mi;$i++){
146
194
 
147
- global $email,$emails,$pass,$passs,$userids;
148
-
149
- if($emails[$i]===$email){
195
+ if($emails[$i]===$email){
150
-
151
- global $email,$emails,$pass,$passs,$userids;
196
+
152
-
153
- if(password_verify($pass,$passs[$i])){//ここで確認
197
+ if(password_verify($pass,$passs[$i])){//ここで確認
154
-
198
+
155
- $_SESSION['id']=$userids[$i];
199
+ $_SESSION['id']=$userids[$i];
156
-
200
+
157
- exit("login");
201
+ exit("login");
202
+
158
-
203
+ }else{
204
+
159
- }else{exit("pass");}
205
+ exit("pass");
160
-
206
+
161
- }}
207
+ }
208
+
209
+ }
210
+
211
+ }
162
212
 
163
213
  ```
164
214
 

2

コードをより細かくしました。。

2019/11/12 12:58

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -14,15 +14,57 @@
14
14
 
15
15
  //~~~省略~~~
16
16
 
17
+ $name=$_POST['name'];$email=$_POST['email'];
18
+
19
+ $password=$_POST['password'];$password=$_POST['password2'];
20
+
21
+ $emails = "";$userids = "";
22
+
23
+ try {
24
+
25
+ $pdo = new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',,
26
+
27
+ array(PDO::ATTR_EMULATE_PREPARES => false));
28
+
29
+ }catch(PDOException $e){exit("spl");}
30
+
31
+ $stmt = $pdo->query("SELECT * FROM user_tb");
32
+
33
+ while($row = $stmt -> fetch(PDO::FETCH_ASSOC)) {
34
+
35
+ $emails .= "[".$row["email"]."]";
36
+
37
+ $userids .= "[".$row["userid"]."]";
38
+
39
+ }
40
+
41
+ function ra(){$len="";
42
+
43
+ for($i=0;$i<10;$i++){$len.=substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 10);}
44
+
45
+ return $len;}
46
+
17
- function newusers($userids){
47
+ function newusers($userids){
48
+
49
+ $kuserid=ra();
50
+
51
+ if(strpos($userids,$kuserid) !== false){
52
+
53
+ newusers();
54
+
55
+ }else{
18
56
 
19
57
  try {
20
58
 
21
- $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','pass',
59
+ $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
22
60
 
23
61
  array(PDO::ATTR_EMULATE_PREPARES => false));
24
62
 
25
- } catch (PDOException $e){exit("sqlerror");}
63
+ } catch (PDOException $e){
64
+
65
+ exit("sql");
66
+
67
+ }
26
68
 
27
69
  $name=$_POST['name'];
28
70
 
@@ -30,33 +72,67 @@
30
72
 
31
73
  $pass1=$_POST['password'];
32
74
 
33
- $stmt=$pdo->prepare("~省略~");
75
+ $pass2=$_POST['password2'];
34
76
 
77
+ $niti=date("Y/m/d H:i:s");
78
+
79
+ $stmt=$pdo->prepare("INSERT INTO user_tb (name, password,password2,userid,createddate,email) VALUES (:name, :password,:password2,:userid,:createddate,:email)");
80
+
35
- $pass1y=password_hash($pass1, PASSWORD_DEFAULT);//ここでハッシュ化
81
+ $pass1s=password_hash($pass1, PASSWORD_DEFAULT);//ここでハッシュ化
82
+
83
+ $pass2s=password_hash($pass2, PASSWORD_DEFAULT);//ここでハッシュ化
36
84
 
37
85
  $stmt->bindParam(':name', $name, PDO::PARAM_STR);
38
86
 
39
- $stmt->bindParam(':password', $pass1y, PDO::PARAM_STR);
87
+ $stmt->bindParam(':password', $pass1s, PDO::PARAM_STR);
88
+
89
+ $stmt->bindParam(':password2', $pass2s, PDO::PARAM_STR);
40
90
 
41
91
  $stmt->bindParam(':email', $email, PDO::PARAM_STR);
42
92
 
93
+ $stmt->bindParam(':userid', $kuserid, PDO::PARAM_STR);
94
+
95
+ $stmt->bindParam(':createddate', $niti, PDO::PARAM_STR);
96
+
43
97
  $stmt->execute();
44
98
 
45
- $_SESSION['us']=$kuserid;
99
+ $_SESSION['id']=$kuserid;
46
100
 
47
- exit("siok");
101
+ exit("ok");
48
102
 
49
- }
103
+ }
104
+
105
+ }
106
+
107
+ function fu001($emails){$email=$_POST['email'];if(strpos($emails,$email) !== false){exit("emailerror");}else{newusers($userids);}}
108
+
109
+ fu001($emails);
50
110
 
51
111
  //~~~省略~~~
52
112
 
53
113
  ```
54
114
 
115
+
116
+
55
117
  login.php
118
+
119
+
56
120
 
57
121
  ```php
58
122
 
123
+ if(isset($_POST["mail"])){}else{exit("error");}
124
+
125
+ try{$emails=array();$passs=array();$userids=array();$ivs=array();$pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
126
+
127
+ array(PDO::ATTR_EMULATE_PREPARES=>false));
128
+
59
- //~~~省略~~~
129
+ }catch(PDOException $e){exit('sql');}
130
+
131
+ $stmt = $pdo->query("SELECT * FROM user_tb");
132
+
133
+ while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){
134
+
135
+ $emails[]=$row["email"];$passs[]=$row["password"];$userids[]=$row["userid"];}
60
136
 
61
137
  $email=$_POST['mail'];
62
138
 
@@ -74,21 +150,21 @@
74
150
 
75
151
  global $email,$emails,$pass,$passs,$userids;
76
152
 
77
- if(password_verify($pass,$passs[$i])){//ここで確認。(ここでfalseになってしまう。)
153
+ if(password_verify($pass,$passs[$i])){//ここで確認
78
154
 
79
- $_SESSION['userid']=$userids[$i];
155
+ $_SESSION['id']=$userids[$i];
80
156
 
81
- exit("loginok");
157
+ exit("login");
82
158
 
83
- }else{
84
-
85
- exit("pass");
159
+ }else{exit("pass");}
86
-
87
- }
88
160
 
89
161
  }}
90
162
 
91
163
  ```
164
+
165
+ ※質問に関係のないことは情報追加・修正依頼に書かないでください。
166
+
167
+ ※質問に関係ない部分は一部省略しているほか、一部実際と異なりますが質問のコードとは無関係です。
92
168
 
93
169
  何回アカウントを作り直してもfalseになってしまいます。
94
170
 

1

追記の追記

2019/11/12 12:03

投稿

Res
Res

スコア184

test CHANGED
File without changes
test CHANGED
@@ -95,3 +95,9 @@
95
95
  疑うところとしては、signup.phpのハッシュ化する部分です。ハッシュ化する位置が関係があるような気もしますが、問題がわかる方は回答お願いいたします。
96
96
 
97
97
  (phpバージョン:PHP7.3.8)(実際のサーバーで動作させています。)
98
+
99
+ ### 追記
100
+
101
+ 19:07:
102
+
103
+ password_verify($pass,$passs[$i])の$passと$passs[$i]の中身の確認は行っています。