'false', 'message' => 'Неизвестное действие']); break; } } else { echo json_encode(['success' => 'false', 'message' => 'Действие не указано']); } /** * Проверка полиса в базе данных * * @return void Выводит JSON с результатом */ function user_verify() { // Подключение к БД $link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); if (!$link) { echo json_encode([ 'success' => 'false', 'message' => 'Ошибка подключения к базе данных' ]); exit; } // Установка кодировки mysqli_set_charset($link, 'utf8mb4'); // Получение и валидация данных $birthday = isset($_POST['birthday']) ? trim($_POST['birthday']) : ''; $inn = isset($_POST['inn']) ? trim($_POST['inn']) : ''; // Проверка обязательных полей if (empty($inn)) { echo json_encode([ 'success' => 'false', 'message' => 'Номер полиса не указан' ]); mysqli_close($link); exit; } // ✅ ЗАЩИТА: Prepared statement вместо прямого SQL // Выбираем только нужные поля и только 1 запись $sql = "SELECT voucher, insured_from, insured_to FROM lexrpiority WHERE voucher = ? LIMIT 1"; $stmt = mysqli_prepare($link, $sql); if (!$stmt) { echo json_encode([ 'success' => 'false', 'message' => 'Ошибка подготовки запроса' ]); mysqli_close($link); exit; } // Привязка параметров (s = string) mysqli_stmt_bind_param($stmt, "s", $inn); // Выполнение запроса if (!mysqli_stmt_execute($stmt)) { echo json_encode([ 'success' => 'false', 'message' => 'Ошибка выполнения запроса' ]); mysqli_stmt_close($stmt); mysqli_close($link); exit; } // Получение результата $result = mysqli_stmt_get_result($stmt); if ($row = mysqli_fetch_assoc($result)) { // Полис найден echo json_encode([ 'success' => 'true', 'message' => 'Полис найден', 'result' => [ 'voucher' => $row['voucher'], 'insured_from' => $row['insured_from'], 'insured_to' => $row['insured_to'] ] ]); } else { // Полис не найден echo json_encode([ 'success' => 'false', 'message' => 'Полис не найден', 'result' => '' ]); } // Закрытие соединений mysqli_stmt_close($stmt); mysqli_close($link); } ?>