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

質問編集履歴

4

追記

2019/04/26 06:04

投稿

toll_tree
toll_tree

スコア199

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

文法修正

2019/04/26 06:04

投稿

toll_tree
toll_tree

スコア199

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

追記です

2019/04/26 05:54

投稿

toll_tree
toll_tree

スコア199

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

修正

2019/04/26 05:22

投稿

toll_tree
toll_tree

スコア199

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