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

質問編集履歴

16

情報の変更

2021/04/21 13:06

投稿

Res
Res

スコア184

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

15

一部の編集

2021/04/21 13:06

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -132,29 +132,6 @@
132
132
  exit('sql:' . $e->message);
133
133
  }
134
134
  ```
135
- ※このコードでも質問の件は改善されていません。
136
135
  ### 情報
137
- データベース:
138
-
139
- |サーバ|バージョン|文字セット|データ保存位置|
140
- |:--|:--:|--:|--:|
141
- |MySQL|5.7.27|UTF-8 Unicode|データベース:data⇒テーブル: user_tb|
142
-
143
- passwodカラム:
144
-
145
- |データ型|照合順序|
146
- |:--|:--:|
147
- |text|utf8_general_ci|
148
-
149
- |Webサーバー|apacheバージョン|phpバージョン|
150
- |:--|:--:|--:|
151
- |Apache|2.4.6|PHP7.3.8|
152
-
153
- 実行環境
154
- pubilic/account/
155
- (あまり関係ないかもしれませんがaccountのサブドメインでやっています。)
156
- signup.phpとlogin.phpは同ディレクトリです。
157
-
158
- さらにほしい情報がありましたらコメントしてください。
159
- 出来る限る早く追記します。
160
- よろしくお願いいたします。
136
+ もう回答は打ち切りたと思います。
137
+ 私自身さらに勉強し、そこでつまずいたところを再度質問したいと思いますのでまたよろしくお願いいたします。

14

一部の編集

2019/11/15 08:27

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -6,10 +6,6 @@
6
6
  signup.php
7
7
  ```php
8
8
  //~~~省略~~~
9
- //$name = $_POST['name'];
10
- //$email = $_POST['email'];
11
- //$password = $_POST['password'];
12
- //$password = $_POST['password2'];
13
9
  $emails = "";
14
10
  $userids = "";
15
11
  try {
@@ -123,7 +119,8 @@
123
119
  }
124
120
  if ($resul ===array()){
125
121
  exit('pass');
122
+ }
126
- }exit($_POST['pass'].":". $result[0]['password']);
123
+ //exit($_POST['pass'].":". $result[0]['password']);
127
124
  if (password_verify($_POST['pass'], $result[0]['password'])) {
128
125
  $_SESSION['id'] = $result[0]['userid'];
129
126
  exit('login');

13

さらにインデント

2019/11/15 07:29

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -6,10 +6,10 @@
6
6
  signup.php
7
7
  ```php
8
8
  //~~~省略~~~
9
- $name = $_POST['name'];
9
+ //$name = $_POST['name'];
10
- $email = $_POST['email'];
10
+ //$email = $_POST['email'];
11
- $password = $_POST['password'];
11
+ //$password = $_POST['password'];
12
- $password = $_POST['password2'];
12
+ //$password = $_POST['password2'];
13
13
  $emails = "";
14
14
  $userids = "";
15
15
  try {
@@ -20,32 +20,32 @@
20
20
  }
21
21
  $stmt = $pdo->query("SELECT * FROM user_tb");
22
22
  while($row = $stmt -> fetch(PDO::FETCH_ASSOC)) {
23
-  $emails .= "[".$row["email"]."]";
23
+  $emails .= "[". $row["email"] ."]";
24
-  $userids .= "[".$row["userid"]."]";
24
+  $userids .= "[". $row["userid"] ."]";
25
25
  }
26
26
  function ra(){
27
27
   $len="";
28
-  for( $i=0; $i<10; $i++ ){
28
+  for( $i = 0; $i < 10; $i++ ){
29
29
    $len.=substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 10);
30
30
   }
31
31
   return $len;
32
32
  }
33
33
  function newusers( $userids ) {
34
34
  $kuserid=ra();
35
- if(strpos($userids,$kuserid) !== false){
35
+ if(strpos( $userids , $kuserid ) !== false){
36
36
  newusers();
37
- }else {
37
+ } else {
38
38
  try {
39
- $pdo = new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
39
+ $pdo = new PDO( 'mysql:host=example.jp;dbname=user_data;charset=utf8' , 'user' , 'password',
40
40
  array(PDO::ATTR_EMULATE_PREPARES => false));
41
- } catch (PDOException $e){
41
+ } catch ( PDOException $e ){
42
- exit("sql");
42
+ exit( "sql" );
43
43
  }
44
44
  $name = $_POST['name'];
45
45
  $email = $_POST['email'];
46
46
  $pass1 = $_POST['password'];
47
47
  $pass2 = $_POST['password2'];
48
- $niti=date("Y/m/d H:i:s");
48
+ $niti=date( "Y/m/d H:i:s" );
49
49
  $stmt = $pdo->prepare("INSERT INTO user_tb (name, password,password2,userid,createddate,email) VALUES (:name, :password,:password2,:userid,:createddate,:email)");
50
50
  $pass1s=password_hash($pass1, PASSWORD_DEFAULT);//ここでハッシュ化
51
51
  $pass2s=password_hash($pass2, PASSWORD_DEFAULT);//ここでハッシュ化
@@ -62,13 +62,13 @@
62
62
  }
63
63
  function fu001 ( $emails ) {
64
64
  $email = $_POST['email'];
65
- if(strpos($emails,$email) !== false){
65
+ if(strpos( $emails , $email ) !== false){
66
66
  exit( "emailerror" );
67
67
  }else {
68
- newusers($userids);
68
+ newusers( $userids );
69
69
  }
70
70
  }
71
- fu001($emails);
71
+ fu001( $emails );
72
72
  //~~~省略~~~
73
73
  ```
74
74
 
@@ -80,7 +80,7 @@
80
80
  $passs = array();
81
81
  $userids = array();
82
82
  $ivs = array();
83
- $pdo = new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
83
+ $pdo = new PDO( 'mysql:host=example.jp;dbname=user_data;charset=utf8' , 'user' , 'password' ,
84
84
  array(PDO::ATTR_EMULATE_PREPARES=>false));
85
85
  }catch( PDOException $e ) {
86
86
  exit('sql');
@@ -91,10 +91,10 @@
91
91
  $passs[] = $row["password"];
92
92
  $userids[] = $row["userid"];}
93
93
  $email = $_POST['mail'];
94
- if( in_array($email, $emails) ){}else{exit("error");}//メールアドレスが存在するかどうか
94
+ if( in_array( $email, $emails ) ){}else{ exit("error"); }//メールアドレスが存在するかどうか
95
95
  $pass = $_POST['pass'];
96
96
  $mi = count($emails);
97
- for( $i=0; $i<$mi; $i++ ){
97
+ for( $i = 0; $i < $mi; $i++ ){
98
98
  if( $emails[$i] === $email ){
99
99
  if( password_verify( $pass , $passs[$i]) ) {//ここで確認
100
100
  $_SESSION['id'] = $userids[$i];

12

見た目の編集

2019/11/15 07:09

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -139,22 +139,25 @@
139
139
  ### 情報
140
140
  データベース:
141
141
 
142
- サーバ: MySQL
143
- サーババージョン: 5.7.27
142
+ |サーバ|バージョン|文字セット|データ保存位置|
144
- サーバ文字セット: UTF-8 Unicode
143
+ |:--|:--:|--:|--:|
145
- アカウントデータ保存:データベース:data⇒テーブル: user_tb
144
+ |MySQL|5.7.27|UTF-8 Unicode|データベース:data⇒テーブル: user_tb|
145
+
146
146
  passwodカラム:
147
+
147
148
  |データ型|照合順序|
148
149
  |:--|:--:|
149
150
  |text|utf8_general_ci|
150
151
 
151
- WEBサーバー:Apache
152
- Apacheバージョン:2.4.6
152
+ |Webサーバー|apacheバージョン|phpバージョン|
153
+ |:--|:--:|--:|
153
- phpバージョン:PHP7.3.8
154
+ |Apache|2.4.6|PHP7.3.8|
155
+
154
156
  実行環境
155
157
  pubilic/account/
156
158
  (あまり関係ないかもしれませんがaccountのサブドメインでやっています。)
157
159
  signup.phpとlogin.phpは同ディレクトリです。
158
160
 
159
161
  さらにほしい情報がありましたらコメントしてください。
160
- 出来る限る早く追記します。
162
+ 出来る限る早く追記します。
163
+ よろしくお願いいたします。

11

情報の追加

2019/11/15 06:59

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -143,6 +143,10 @@
143
143
  サーバのバージョン: 5.7.27
144
144
  サーバ文字セット: UTF-8 Unicode
145
145
  アカウントデータ保存:データベース:data⇒テーブル: user_tb
146
+ passwodカラム:
147
+ |データ型|照合順序|
148
+ |:--|:--:|
149
+ |text|utf8_general_ci|
146
150
 
147
151
  WEBサーバー:Apache
148
152
  Apacheバージョン:2.4.6

10

一部の編集

2019/11/15 06:52

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -105,12 +105,8 @@
105
105
  }
106
106
  }
107
107
  ```
108
- ※質問に関係のないことは情報追加・修正依頼に書かないでください。
109
108
  ※質問に関係ない部分は一部省略しているほか、一部実際と異なりますが質問のコードとは無関係です。
110
109
  何回アカウントを作り直してもfalseになってしまいます。
111
- 疑うところとしては、signup.phpのハッシュ化する部分です。ハッシュ化する位置が関係があるような気もしますが、問題がわかる方は回答お願いいたします。
112
- (phpバージョン:PHP7.3.8)(実際のサーバーで動作させています。)
113
-
114
110
  ### 追記1
115
111
  回答者からいただいたソースコードでlogin.phpのコードを改めました。
116
112
  ```php
@@ -150,10 +146,11 @@
150
146
 
151
147
  WEBサーバー:Apache
152
148
  Apacheバージョン:2.4.6
149
+ phpバージョン:PHP7.3.8
153
150
  実行環境
154
151
  pubilic/account/
155
- (あまり関係ないかもしれませんがaccountのサブドメインやっています。)
152
+ (あまり関係ないかもしれませんがaccountのサブドメインやっています。)
156
- signup.phpとlogin.phpは同ディレクトリにあります。
153
+ signup.phpとlogin.phpは同ディレクトリす。
157
154
 
158
155
  さらにほしい情報がありましたらコメントしてください。
159
156
  出来る限る早く追記します。

9

情報の追記

2019/11/15 06:47

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -141,12 +141,12 @@
141
141
  ```
142
142
  ※このコードでも質問の件は改善されていません。
143
143
  ### 情報
144
- データベースサーバー:
144
+ データベース:
145
145
 
146
- サーバの種類: MySQL
146
+ サーバ: MySQL
147
147
  サーバのバージョン: 5.7.27
148
- プロトコル バージョン: 10
149
148
  サーバ文字セット: UTF-8 Unicode
149
+ アカウントデータ保存:データベース:data⇒テーブル: user_tb
150
150
 
151
151
  WEBサーバー:Apache
152
152
  Apacheバージョン:2.4.6

8

サーバー情報の追記

2019/11/14 12:26

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -140,9 +140,20 @@
140
140
  }
141
141
  ```
142
142
  ※このコードでも質問の件は改善されていません。
143
- ### 追記2
143
+ ### 情報
144
- 11/13/21:37:
144
+ データベースサーバー:
145
- やってほしいことだけを記載した丸投げの質問と思った理由を回答していただきありがとうございます。
146
145
 
146
+ サーバの種類: MySQL
147
+ サーバのバージョン: 5.7.27
148
+ プロトコル バージョン: 10
149
+ サーバ文字セット: UTF-8 Unicode
150
+
151
+ WEBサーバー:Apache
152
+ Apacheバージョン:2.4.6
153
+ 実行環境
147
- 11/12/19:07:
154
+ pubilic/account/
148
- password_verify($pass,$passs[$i])$passと$passs[$i]の中身の確認は行っています。
155
+ (あまり関係ないかもしれませんがaccountサブドメインやっています。)
156
+ signup.phpとlogin.phpは同ディレクトリにあります。
157
+
158
+ さらにほしい情報がありましたらコメントしてください。
159
+ 出来る限る早く追記します。

7

追記の追記

2019/11/14 12:23

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -142,7 +142,7 @@
142
142
  ※このコードでも質問の件は改善されていません。
143
143
  ### 追記2
144
144
  11/13/21:37:
145
- やってほしいことだけを記載した丸投げの質問と思うならば、なぜそうおもったのか。改善してほしところを教えてく。お願いします。
145
+ やってほしいことだけを記載した丸投げの質問と思った理由を回答していきありがとうございます。
146
146
 
147
147
  11/12/19:07:
148
148
  password_verify($pass,$passs[$i])の$passと$passs[$i]の中身の確認は行っています。

6

追記

2019/11/14 12:09

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -142,7 +142,7 @@
142
142
  ※このコードでも質問の件は改善されていません。
143
143
  ### 追記2
144
144
  11/13/21:37:
145
- やってほしいことだけを記載した丸投げの質問と思うならば、なぜそうおもったのか。改善してほしいところを教えてください。
145
+ やってほしいことだけを記載した丸投げの質問と思うならば、なぜそうおもったのか。改善してほしいところを教えてください。お願いします。
146
146
 
147
147
  11/12/19:07:
148
148
  password_verify($pass,$passs[$i])の$passと$passs[$i]の中身の確認は行っています。

5

一部の編集

2019/11/13 21:58

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -110,6 +110,39 @@
110
110
  何回アカウントを作り直してもfalseになってしまいます。
111
111
  疑うところとしては、signup.phpのハッシュ化する部分です。ハッシュ化する位置が関係があるような気もしますが、問題がわかる方は回答お願いいたします。
112
112
  (phpバージョン:PHP7.3.8)(実際のサーバーで動作させています。)
113
+
113
- ### 追記
114
+ ### 追記1
115
+ 回答者からいただいたソースコードでlogin.phpのコードを改めました。
114
- 19:07:
116
+ ```php
117
+ try {
118
+ $pdo = new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
119
+ array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
120
+ );
121
+ $stmt = $pdo->prepare('SELECT userid, email, password FROM user_tb WHERE email = :email');
122
+ $stmt->bindValue(':email', $_POST['mail']);
123
+ $stmt->execute();
124
+ $result = $stmt->fetchAll();
125
+ if ($result === false) {
126
+ exit('fetch error');
127
+ }
128
+ if ($resul ===array()){
129
+ exit('pass');
130
+ }exit($_POST['pass'].":". $result[0]['password']);
131
+ if (password_verify($_POST['pass'], $result[0]['password'])) {
132
+ $_SESSION['id'] = $result[0]['userid'];
133
+ exit('login');
134
+ }
135
+ else {
136
+ exit('pass');
137
+ }
138
+ } catch (PDOException $e) {
139
+ exit('sql:' . $e->message);
140
+ }
141
+ ```
142
+ ※このコードでも質問の件は改善されていません。
143
+ ### 追記2
144
+ 11/13/21:37:
145
+ やってほしいことだけを記載した丸投げの質問と思うならば、なぜそうおもったのか。改善してほしいところを教えてください。
146
+
147
+ 11/12/19:07:
115
148
  password_verify($pass,$passs[$i])の$passと$passs[$i]の中身の確認は行っています。

4

もう少しインデント

2019/11/13 12:44

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -6,10 +6,10 @@
6
6
  signup.php
7
7
  ```php
8
8
  //~~~省略~~~
9
- $name=$_POST['name'];
9
+ $name = $_POST['name'];
10
- $email=$_POST['email'];
10
+ $email = $_POST['email'];
11
- $password=$_POST['password'];
11
+ $password = $_POST['password'];
12
- $password=$_POST['password2'];
12
+ $password = $_POST['password2'];
13
13
  $emails = "";
14
14
  $userids = "";
15
15
  try {
@@ -25,28 +25,28 @@
25
25
  }
26
26
  function ra(){
27
27
   $len="";
28
-  for($i=0;$i<10;$i++){
28
+  for( $i=0; $i<10; $i++ ){
29
29
    $len.=substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 10);
30
30
   }
31
31
   return $len;
32
32
  }
33
- function newusers($userids){
33
+ function newusers( $userids ) {
34
34
  $kuserid=ra();
35
35
  if(strpos($userids,$kuserid) !== false){
36
36
  newusers();
37
- }else{
37
+ }else {
38
38
  try {
39
- $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
39
+ $pdo = new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
40
40
  array(PDO::ATTR_EMULATE_PREPARES => false));
41
41
  } catch (PDOException $e){
42
42
  exit("sql");
43
43
  }
44
- $name=$_POST['name'];
44
+ $name = $_POST['name'];
45
- $email=$_POST['email'];
45
+ $email = $_POST['email'];
46
- $pass1=$_POST['password'];
46
+ $pass1 = $_POST['password'];
47
- $pass2=$_POST['password2'];
47
+ $pass2 = $_POST['password2'];
48
48
  $niti=date("Y/m/d H:i:s");
49
- $stmt=$pdo->prepare("INSERT INTO user_tb (name, password,password2,userid,createddate,email) VALUES (:name, :password,:password2,:userid,:createddate,:email)");
49
+ $stmt = $pdo->prepare("INSERT INTO user_tb (name, password,password2,userid,createddate,email) VALUES (:name, :password,:password2,:userid,:createddate,:email)");
50
50
  $pass1s=password_hash($pass1, PASSWORD_DEFAULT);//ここでハッシュ化
51
51
  $pass2s=password_hash($pass2, PASSWORD_DEFAULT);//ここでハッシュ化
52
52
  $stmt->bindParam(':name', $name, PDO::PARAM_STR);
@@ -56,15 +56,15 @@
56
56
  $stmt->bindParam(':userid', $kuserid, PDO::PARAM_STR);
57
57
  $stmt->bindParam(':createddate', $niti, PDO::PARAM_STR);
58
58
  $stmt->execute();
59
- $_SESSION['id']=$kuserid;
59
+ $_SESSION['id'] = $kuserid;
60
60
  exit("ok");
61
61
  }
62
62
  }
63
- function fu001($emails){
63
+ function fu001 ( $emails ) {
64
- $email=$_POST['email'];
64
+ $email = $_POST['email'];
65
65
  if(strpos($emails,$email) !== false){
66
- exit("emailerror");
66
+ exit( "emailerror" );
67
- }else{
67
+ }else {
68
68
  newusers($userids);
69
69
  }
70
70
  }
@@ -76,28 +76,28 @@
76
76
 
77
77
  ```php
78
78
  try{
79
- $emails=array();
79
+ $emails = array();
80
- $passs=array();
80
+ $passs = array();
81
- $userids=array();
81
+ $userids = array();
82
- $ivs=array();
82
+ $ivs = array();
83
- $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
83
+ $pdo = new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
84
84
  array(PDO::ATTR_EMULATE_PREPARES=>false));
85
- }catch(PDOException $e){
85
+ }catch( PDOException $e ) {
86
86
  exit('sql');
87
87
  }
88
- $stmt=$pdo->query("SELECT * FROM user_tb");
88
+ $stmt = $pdo->query("SELECT * FROM user_tb");
89
89
  while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){
90
- $emails[]=$row["email"];
90
+ $emails[] = $row["email"];
91
- $passs[]=$row["password"];
91
+ $passs[] = $row["password"];
92
- $userids[]=$row["userid"];}
92
+ $userids[] = $row["userid"];}
93
- $email=$_POST['mail'];
93
+ $email = $_POST['mail'];
94
- if(in_array($email, $emails)){}else{exit("error");}//メールアドレスが存在するかどうか
94
+ if( in_array($email, $emails) ){}else{exit("error");}//メールアドレスが存在するかどうか
95
- $pass=$_POST['pass'];
95
+ $pass = $_POST['pass'];
96
- $mi=count($emails);
96
+ $mi = count($emails);
97
- for($i=0;$i<$mi;$i++){
97
+ for( $i=0; $i<$mi; $i++ ){
98
- if($emails[$i]===$email){
98
+ if( $emails[$i] === $email ){
99
- if(password_verify($pass,$passs[$i])){//ここで確認
99
+ if( password_verify( $pass , $passs[$i]) ) {//ここで確認
100
- $_SESSION['id']=$userids[$i];
100
+ $_SESSION['id'] = $userids[$i];
101
101
  exit("login");
102
102
  }else{
103
103
  exit("pass");

3

インデント等の追加

2019/11/13 08:36

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -6,28 +6,37 @@
6
6
  signup.php
7
7
  ```php
8
8
  //~~~省略~~~
9
+ $name=$_POST['name'];
9
- $name=$_POST['name'];$email=$_POST['email'];
10
+ $email=$_POST['email'];
11
+ $password=$_POST['password'];
10
- $password=$_POST['password'];$password=$_POST['password2'];
12
+ $password=$_POST['password2'];
13
+ $emails = "";
11
- $emails = "";$userids = "";
14
+ $userids = "";
12
15
  try {
13
16
  $pdo = new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',,
14
17
  array(PDO::ATTR_EMULATE_PREPARES => false));
15
- }catch(PDOException $e){exit("spl");}
18
+ }catch(PDOException $e){
19
+  exit("spl");
20
+ }
16
21
  $stmt = $pdo->query("SELECT * FROM user_tb");
17
22
  while($row = $stmt -> fetch(PDO::FETCH_ASSOC)) {
18
- $emails .= "[".$row["email"]."]";
23
+  $emails .= "[".$row["email"]."]";
19
- $userids .= "[".$row["userid"]."]";
24
+  $userids .= "[".$row["userid"]."]";
20
25
  }
26
+ function ra(){
21
- function ra(){$len="";
27
+  $len="";
28
+  for($i=0;$i<10;$i++){
22
- for($i=0;$i<10;$i++){$len.=substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 10);}
29
+   $len.=substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 10);
30
+  }
23
- return $len;}
31
+  return $len;
32
+ }
24
33
  function newusers($userids){
25
34
  $kuserid=ra();
26
35
  if(strpos($userids,$kuserid) !== false){
27
36
  newusers();
28
37
  }else{
29
38
  try {
30
- $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
39
+ $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
31
40
  array(PDO::ATTR_EMULATE_PREPARES => false));
32
41
  } catch (PDOException $e){
33
42
  exit("sql");
@@ -38,8 +47,8 @@
38
47
  $pass2=$_POST['password2'];
39
48
  $niti=date("Y/m/d H:i:s");
40
49
  $stmt=$pdo->prepare("INSERT INTO user_tb (name, password,password2,userid,createddate,email) VALUES (:name, :password,:password2,:userid,:createddate,:email)");
41
- $pass1s=password_hash($pass1, PASSWORD_DEFAULT);//ここでハッシュ化
50
+ $pass1s=password_hash($pass1, PASSWORD_DEFAULT);//ここでハッシュ化
42
- $pass2s=password_hash($pass2, PASSWORD_DEFAULT);//ここでハッシュ化
51
+ $pass2s=password_hash($pass2, PASSWORD_DEFAULT);//ここでハッシュ化
43
52
  $stmt->bindParam(':name', $name, PDO::PARAM_STR);
44
53
  $stmt->bindParam(':password', $pass1s, PDO::PARAM_STR);
45
54
  $stmt->bindParam(':password2', $pass2s, PDO::PARAM_STR);
@@ -51,7 +60,14 @@
51
60
  exit("ok");
52
61
  }
53
62
  }
63
+ function fu001($emails){
64
+ $email=$_POST['email'];
54
- function fu001($emails){$email=$_POST['email'];if(strpos($emails,$email) !== false){exit("emailerror");}else{newusers($userids);}}
65
+ if(strpos($emails,$email) !== false){
66
+ exit("emailerror");
67
+ }else{
68
+ newusers($userids);
69
+ }
70
+ }
55
71
  fu001($emails);
56
72
  //~~~省略~~~
57
73
  ```
@@ -59,26 +75,35 @@
59
75
  login.php
60
76
 
61
77
  ```php
78
+ try{
62
- if(isset($_POST["mail"])){}else{exit("error");}
79
+ $emails=array();
80
+ $passs=array();
81
+ $userids=array();
82
+ $ivs=array();
63
- try{$emails=array();$passs=array();$userids=array();$ivs=array();$pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
83
+ $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
64
84
  array(PDO::ATTR_EMULATE_PREPARES=>false));
65
- }catch(PDOException $e){exit('sql');}
85
+ }catch(PDOException $e){
86
+ exit('sql');
87
+ }
66
- $stmt = $pdo->query("SELECT * FROM user_tb");
88
+ $stmt=$pdo->query("SELECT * FROM user_tb");
67
89
  while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){
90
+ $emails[]=$row["email"];
91
+ $passs[]=$row["password"];
68
- $emails[]=$row["email"];$passs[]=$row["password"];$userids[]=$row["userid"];}
92
+ $userids[]=$row["userid"];}
69
93
  $email=$_POST['mail'];
70
- if(in_array($email, $emails)){}else{exit("error");}
94
+ if(in_array($email, $emails)){}else{exit("error");}//メールアドレスが存在するかどうか
71
95
  $pass=$_POST['pass'];
72
96
  $mi=count($emails);
73
97
  for($i=0;$i<$mi;$i++){
74
- global $email,$emails,$pass,$passs,$userids;
75
- if($emails[$i]===$email){
98
+ if($emails[$i]===$email){
76
- global $email,$emails,$pass,$passs,$userids;
77
- if(password_verify($pass,$passs[$i])){//ここで確認
99
+ if(password_verify($pass,$passs[$i])){//ここで確認
78
- $_SESSION['id']=$userids[$i];
100
+ $_SESSION['id']=$userids[$i];
79
- exit("login");
101
+ exit("login");
102
+ }else{
80
- }else{exit("pass");}
103
+ exit("pass");
81
- }}
104
+ }
105
+ }
106
+ }
82
107
  ```
83
108
  ※質問に関係のないことは情報追加・修正依頼に書かないでください。
84
109
  ※質問に関係ない部分は一部省略しているほか、一部実際と異なりますが質問のコードとは無関係です。

2

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

2019/11/12 12:58

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -6,28 +6,66 @@
6
6
  signup.php
7
7
  ```php
8
8
  //~~~省略~~~
9
+ $name=$_POST['name'];$email=$_POST['email'];
10
+ $password=$_POST['password'];$password=$_POST['password2'];
11
+ $emails = "";$userids = "";
12
+ try {
13
+ $pdo = new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',,
14
+ array(PDO::ATTR_EMULATE_PREPARES => false));
15
+ }catch(PDOException $e){exit("spl");}
16
+ $stmt = $pdo->query("SELECT * FROM user_tb");
17
+ while($row = $stmt -> fetch(PDO::FETCH_ASSOC)) {
18
+ $emails .= "[".$row["email"]."]";
19
+ $userids .= "[".$row["userid"]."]";
20
+ }
21
+ function ra(){$len="";
22
+ for($i=0;$i<10;$i++){$len.=substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, 10);}
23
+ return $len;}
9
- function newusers($userids){
24
+ function newusers($userids){
25
+ $kuserid=ra();
26
+ if(strpos($userids,$kuserid) !== false){
27
+ newusers();
28
+ }else{
10
29
  try {
11
- $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','pass',
30
+ $pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
12
31
  array(PDO::ATTR_EMULATE_PREPARES => false));
13
- } catch (PDOException $e){exit("sqlerror");}
32
+ } catch (PDOException $e){
33
+ exit("sql");
34
+ }
14
35
  $name=$_POST['name'];
15
36
  $email=$_POST['email'];
16
37
  $pass1=$_POST['password'];
38
+ $pass2=$_POST['password2'];
17
- $stmt=$pdo->prepare("~省略~");
39
+ $niti=date("Y/m/d H:i:s");
40
+ $stmt=$pdo->prepare("INSERT INTO user_tb (name, password,password2,userid,createddate,email) VALUES (:name, :password,:password2,:userid,:createddate,:email)");
18
- $pass1y=password_hash($pass1, PASSWORD_DEFAULT);//ここでハッシュ化
41
+ $pass1s=password_hash($pass1, PASSWORD_DEFAULT);//ここでハッシュ化
42
+ $pass2s=password_hash($pass2, PASSWORD_DEFAULT);//ここでハッシュ化
19
43
  $stmt->bindParam(':name', $name, PDO::PARAM_STR);
20
- $stmt->bindParam(':password', $pass1y, PDO::PARAM_STR);
44
+ $stmt->bindParam(':password', $pass1s, PDO::PARAM_STR);
45
+ $stmt->bindParam(':password2', $pass2s, PDO::PARAM_STR);
21
46
  $stmt->bindParam(':email', $email, PDO::PARAM_STR);
47
+ $stmt->bindParam(':userid', $kuserid, PDO::PARAM_STR);
48
+ $stmt->bindParam(':createddate', $niti, PDO::PARAM_STR);
22
49
  $stmt->execute();
23
- $_SESSION['us']=$kuserid;
50
+ $_SESSION['id']=$kuserid;
24
- exit("siok");
51
+ exit("ok");
25
- }
52
+ }
53
+ }
54
+ function fu001($emails){$email=$_POST['email'];if(strpos($emails,$email) !== false){exit("emailerror");}else{newusers($userids);}}
55
+ fu001($emails);
26
56
  //~~~省略~~~
27
57
  ```
58
+
28
59
  login.php
60
+
29
61
  ```php
62
+ if(isset($_POST["mail"])){}else{exit("error");}
63
+ try{$emails=array();$passs=array();$userids=array();$ivs=array();$pdo=new PDO('mysql:host=example.jp;dbname=user_data;charset=utf8','user','password',
64
+ array(PDO::ATTR_EMULATE_PREPARES=>false));
30
- //~~~省略~~~
65
+ }catch(PDOException $e){exit('sql');}
66
+ $stmt = $pdo->query("SELECT * FROM user_tb");
67
+ while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){
68
+ $emails[]=$row["email"];$passs[]=$row["password"];$userids[]=$row["userid"];}
31
69
  $email=$_POST['mail'];
32
70
  if(in_array($email, $emails)){}else{exit("error");}
33
71
  $pass=$_POST['pass'];
@@ -36,14 +74,14 @@
36
74
  global $email,$emails,$pass,$passs,$userids;
37
75
  if($emails[$i]===$email){
38
76
  global $email,$emails,$pass,$passs,$userids;
39
- if(password_verify($pass,$passs[$i])){//ここで確認。(ここでfalseになってしまう。)
77
+ if(password_verify($pass,$passs[$i])){//ここで確認
40
- $_SESSION['userid']=$userids[$i];
78
+ $_SESSION['id']=$userids[$i];
41
- exit("loginok");
79
+ exit("login");
42
- }else{
43
- exit("pass");
80
+ }else{exit("pass");}
44
- }
45
81
  }}
46
82
  ```
83
+ ※質問に関係のないことは情報追加・修正依頼に書かないでください。
84
+ ※質問に関係ない部分は一部省略しているほか、一部実際と異なりますが質問のコードとは無関係です。
47
85
  何回アカウントを作り直してもfalseになってしまいます。
48
86
  疑うところとしては、signup.phpのハッシュ化する部分です。ハッシュ化する位置が関係があるような気もしますが、問題がわかる方は回答お願いいたします。
49
87
  (phpバージョン:PHP7.3.8)(実際のサーバーで動作させています。)

1

追記の追記

2019/11/12 12:03

投稿

Res
Res

スコア184

title CHANGED
File without changes
body CHANGED
@@ -46,4 +46,7 @@
46
46
  ```
47
47
  何回アカウントを作り直してもfalseになってしまいます。
48
48
  疑うところとしては、signup.phpのハッシュ化する部分です。ハッシュ化する位置が関係があるような気もしますが、問題がわかる方は回答お願いいたします。
49
- (phpバージョン:PHP7.3.8)(実際のサーバーで動作させています。)
49
+ (phpバージョン:PHP7.3.8)(実際のサーバーで動作させています。)
50
+ ### 追記
51
+ 19:07:
52
+ password_verify($pass,$passs[$i])の$passと$passs[$i]の中身の確認は行っています。