質問編集履歴
4
誤字
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
誤字
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
誤字
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句内での例外処理を追加しました。
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
|
|