Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads
<?php
/**
* API Endpoint: Controleer het antwoord van de gebruiker
* POST parameters:
* - word_id: ID van het woord
* - answer: Het antwoord van de gebruiker
* - session_id: Unieke sessie ID
*/
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-Type');
require_once 'config.php';
// Handle preflight requests
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
http_response_code(200);
exit();
}
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['success' => false, 'error' => 'Method not allowed']);
exit();
}
try {
// Lees JSON input
$rawInput = file_get_contents('php://input');
$input = json_decode($rawInput, true);
// Check for JSON decode errors
if (json_last_error() !== JSON_ERROR_NONE) {
throw new Exception('Invalid JSON: ' . json_last_error_msg());
}
if (!$input || !is_array($input)) {
throw new Exception('Invalid request body');
}
if (!isset($input['word_id']) || !isset($input['answer']) || !isset($input['session_id'])) {
$missing = [];
if (!isset($input['word_id'])) $missing[] = 'word_id';
if (!isset($input['answer'])) $missing[] = 'answer';
if (!isset($input['session_id'])) $missing[] = 'session_id';
throw new Exception('Missing required parameters: ' . implode(', ', $missing));
}
$word_id = intval($input['word_id']);
$answer = trim(strtolower($input['answer']));
$session_id = $input['session_id'];
$pdo = getDbConnection();
// Haal het correcte woord op
$stmt = $pdo->prepare("SELECT english_word, dutch_translation FROM words WHERE word_id = :word_id");
$stmt->execute([':word_id' => $word_id]);
$word = $stmt->fetch();
if (!$word) {
throw new Exception('Word not found');
}
// Controleer of antwoord correct is
$correct_answer = strtolower($word['dutch_translation']);
$is_correct = ($answer === $correct_answer);
$correct_value = $is_correct ? 1 : 0;
// Update of insert user progress
$stmt = $pdo->prepare("
INSERT INTO user_progress (session_id, word_id, attempts, correct, is_mastered)
VALUES (:session_id, :word_id, 1, :correct, 0)
ON DUPLICATE KEY UPDATE
attempts = attempts + 1,
correct = correct + :correct_update,
is_mastered = (correct + :correct_check >= 3),
last_attempt = CURRENT_TIMESTAMP
");
$stmt->execute([
':session_id' => $session_id,
':word_id' => $word_id,
':correct' => $correct_value,
':correct_update' => $correct_value,
':correct_check' => $correct_value
]);
// Haal progress statistieken op
$stmt = $pdo->prepare("
SELECT attempts, correct, is_mastered
FROM user_progress
WHERE session_id = :session_id AND word_id = :word_id
");
$stmt->execute([
':session_id' => $session_id,
':word_id' => $word_id
]);
$progress = $stmt->fetch();
echo json_encode([
'success' => true,
'correct' => $is_correct,
'correct_answer' => $word['dutch_translation'],
'english_word' => $word['english_word'],
'progress' => $progress
]);
} catch (Exception $e) {
http_response_code(400);
echo json_encode([
'success' => false,
'error' => $e->getMessage(),
'debug' => [
'file' => basename($e->getFile()),
'line' => $e->getLine()
]
]);
}
?>