質問編集履歴

4

誤字

2023/04/28 00:11

投稿

joe3
joe3

スコア1

test CHANGED
File without changes
test CHANGED
@@ -180,6 +180,7 @@
180
180
  依然として同じエラーが発生しております。
181
181
  ```
182
182
  Tere was a problem with the fetch operation: SyntaxError: Unexpected token 'F', "File not f"... is not valid JSON
183
+ ```
183
184
 
184
185
  ### その他の情報
185
186
  ChatGPTで質問をしたところ、以下のようなコメントが返ってきました。

3

誤字

2023/04/28 00:10

投稿

joe3
joe3

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- #当初の問合せ
1
+ # 当初の問合せ
2
2
  ### 実現したいこと
3
3
  - [ ] html上のformにuser_idとpasswordを入力し、submitする
4
4
  - [ ] JS上でsubmitを検知し、入力されたuser_idとpasswordをfetchを使いpost形式でサーバーに送信する

2

誤字

2023/04/28 00:10

投稿

joe3
joe3

スコア1

test CHANGED
File without changes
test CHANGED
@@ -130,7 +130,7 @@
130
130
 
131
131
  $result = 1;
132
132
  ```
133
- #修正
133
+ # 修正
134
134
  ### 修正内容
135
135
  PHP内のprocessPost()関数を以下のようにtry{} catch{}を使い、エラーハンドリングするよう修正しました。
136
136
 

1

PHP句内での例外処理を追加しました。

2023/04/28 00:09

投稿

joe3
joe3

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,4 @@
1
+ #当初の問合せ
1
2
  ### 実現したいこと
2
3
  - [ ] html上のformにuser_idとpasswordを入力し、submitする
3
4
  - [ ] JS上でsubmitを検知し、入力されたuser_idとpasswordをfetchを使いpost形式でサーバーに送信する
@@ -129,5 +130,62 @@
129
130
 
130
131
  $result = 1;
131
132
  ```
133
+ #修正
134
+ ### 修正内容
135
+ PHP内のprocessPost()関数を以下のようにtry{} catch{}を使い、エラーハンドリングするよう修正しました。
136
+
137
+ ```PHP
138
+ public function processPost()
139
+ {
140
+ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
141
+ $action = filter_input(INPUT_GET, 'action');
142
+
143
+ switch ($action) {
144
+ case 'login':
145
+ $user_id = trim(filter_input(INPUT_POST, 'user_id'));
146
+ $password = trim(filter_input(INPUT_POST, 'password'));
147
+ try {
148
+
149
+ $stmt = $this->pdo->prepare("SELECT password FROM users WHERE user_id = :user_id");
150
+ $stmt->bindValue('user_id', $user_id, \PDO::PARAM_STR);
151
+ $stmt->execute();
152
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
153
+
154
+ if (!$row) {
155
+ $result = 0;
156
+ }
157
+
158
+ $hashed_password = $row['password'];
159
+
160
+ if (password_verify($password, $hashed_password)) {
161
+ $result = 1;
162
+ } else {
163
+ $result = 0;
164
+ }
165
+ } catch (\Exception $e) {
166
+ $result = $e->getMessage();
167
+ }
168
+ header('Content-type: application/json');
169
+ echo json_encode(['result' => $result]);
170
+ break;
171
+ default:
172
+ exit;
173
+ }
174
+ exit;
175
+ }
176
+ }
177
+ ```
178
+
179
+ ### 結果
180
+ 依然として同じエラーが発生しております。
181
+ ```
182
+ Tere was a problem with the fetch operation: SyntaxError: Unexpected token 'F', "File not f"... is not valid JSON
183
+
184
+ ### その他の情報
185
+ ChatGPTで質問をしたところ、以下のようなコメントが返ってきました。
186
+ おそらくクエリが正しく実行できておらず、エラーが返ってきていることが原因ではないかと考えておりました。ただ、今回の修正でクエリをtry句内に入れても例外処理ができなかったので、別のところに原因があるような気もしております。
187
+
188
+ > エラーメッセージ「caught (in promise) SyntaxError: Unexpected token 'F', "File not f"... is not valid JSON」から、JSONの形式が正しくないことが原因であると推測されます。また、エラーの内容から、JSONの開始位置が「F」であることがわかります。
189
+ > このようなエラーが発生する理由は、PHPの出力に余分な文字列が含まれている場合があります。例えば、PHPの処理中にエラーメッセージが出力された場合などです。
132
190
 
133
191