質問編集履歴
4
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -104,6 +104,61 @@
|
|
104
104
|
</body>
|
105
105
|
</html>
|
106
106
|
```
|
107
|
+
下記は、shop_class.phpです
|
108
|
+
```php
|
109
|
+
|
110
|
+
<?php
|
111
|
+
|
112
|
+
class Shop
|
113
|
+
{
|
114
|
+
|
115
|
+
private $dbh;
|
116
|
+
|
117
|
+
public function __construct($dsn,$user,$password){
|
118
|
+
$dbh = new PDO($dsn,$user,$password);
|
119
|
+
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
|
120
|
+
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
|
121
|
+
$this->dbh = $dbh;
|
122
|
+
}
|
123
|
+
|
124
|
+
public function h($str){
|
125
|
+
return htmlspecialchars($str,ENT_QUOTES,'UTF-8');
|
126
|
+
}
|
127
|
+
|
128
|
+
public function write($user_name,$password){
|
129
|
+
|
130
|
+
$stmt = $this->dbh->prepare("INSERT INTO user(user_name,password,created_at)VALUES(:user_name,:password,now())");
|
131
|
+
$stmt->bindValue(':user_name',$user_name,PDO::PARAM_STR);
|
132
|
+
$stmt->bindValue(':password',$password,PDO::PARAM_STR);
|
133
|
+
$stmt->execute();
|
134
|
+
|
135
|
+
|
136
|
+
}
|
137
|
+
|
138
|
+
public function user_check($user_name){
|
139
|
+
$stmt = $this->dbh->prepare("SELECT user_name FROM user WHERE user_name = :user_name");
|
140
|
+
$stmt->bindValue(':user_name',$user_name,PDO::PARAM_STR);
|
141
|
+
$stmt->execute();
|
142
|
+
$result = $stmt->fetchALL(PDO::FETCH_ASSOC);
|
143
|
+
if(count($result) > 0){
|
144
|
+
return '同じユーザー名が既に登録されています';
|
145
|
+
}
|
146
|
+
return 'ok';
|
147
|
+
|
148
|
+
}
|
149
|
+
|
150
|
+
public function login_check($user_name){
|
151
|
+
$stmt = $this->dbh->prepare(" SELECT user_name,password FROM user WHERE user_name = :user_name ");
|
152
|
+
$stmt->bindValue(':user_name',$user_name,PDO::PARAM_STR);
|
153
|
+
$stmt->execute();
|
154
|
+
$user_info = $stmt->fetchALL(PDO::FETCH_ASSOC);
|
155
|
+
return $user_info;
|
156
|
+
|
157
|
+
}
|
158
|
+
|
159
|
+
}
|
160
|
+
```
|
161
|
+
```
|
107
162
|
以下はエラーの内容になります。
|
108
163
|
「Notice: Undefined index: password in C:\xampp\xampp\htdocs\ec_website\login.php on line 28」
|
109
164
|
|
3
文法修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -107,4 +107,19 @@
|
|
107
107
|
以下はエラーの内容になります。
|
108
108
|
「Notice: Undefined index: password in C:\xampp\xampp\htdocs\ec_website\login.php on line 28」
|
109
109
|
|
110
|
-
追記です。$user_infoの中身なのですが、$user_info = $shop->login_check($user_name);ここの時点では、キー「password」及び「user_name」は存在しています。
|
110
|
+
追記です。$user_infoの中身なのですが、$user_info = $shop->login_check($user_name);ここの時点では、キー「password」及び「user_name」は存在しています。
|
111
|
+
|
112
|
+
追記です。
|
113
|
+
```
|
114
|
+
$user_info = $shop->login_check($user_name);
|
115
|
+
var_dump($user_info);
|
116
|
+
|
117
|
+
if(count($user_info) > 0){
|
118
|
+
|
119
|
+
var_dump($user_info);
|
120
|
+
if(password_verify($password,$user_info['password'])){
|
121
|
+
```
|
122
|
+
上記の、「$user_info」の返り値は、上から、「array(1) { [0]=> array(2) { ["user_name"]=> string(7) "yamada1" ["password"]=> string(60) "$2y$10$wVmi2NTWAK857dsfUTIG1O5r0krEMP2m1yfVH6MXva1XJbJbtH3my" } }」
|
123
|
+
|
124
|
+
その下のvar_dumpの結果は、「array(1) { [0]=> array(2) { ["user_name"]=> string(7) "yamada1" ["password"]=> string(60) "$2y$10$wVmi2NTWAK857dsfUTIG1O5r0krEMP2m1yfVH6MXva1XJbJbtH3my" } }」
|
125
|
+
です。
|
2
追記です
title
CHANGED
File without changes
|
body
CHANGED
@@ -105,4 +105,6 @@
|
|
105
105
|
</html>
|
106
106
|
```
|
107
107
|
以下はエラーの内容になります。
|
108
|
-
「Notice: Undefined index: password in C:\xampp\xampp\htdocs\ec_website\login.php on line 28」
|
108
|
+
「Notice: Undefined index: password in C:\xampp\xampp\htdocs\ec_website\login.php on line 28」
|
109
|
+
|
110
|
+
追記です。$user_infoの中身なのですが、$user_info = $shop->login_check($user_name);ここの時点では、キー「password」及び「user_name」は存在しています。
|
1
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
password_verifyによる認証に失敗してしまった場合、Noticeエラーが出てしまいます。今までは、
|
1
|
+
password_verifyによる認証に失敗してしまった場合、Noticeエラーが出てしまいます。今までは、認証に失敗してもNoticeエラーとはならず、falseとなるだけでした。Noticeエラーが出てしまう、理由が分からないため、ご教示頂ければ幸いです。
|
2
2
|
該当のコードは、以下のlogin.phpです。
|
3
3
|
```php
|
4
4
|
<?php
|