168 lines
6.5 KiB
PHP
168 lines
6.5 KiB
PHP
|
|
<?php
|
|||
|
|
/**
|
|||
|
|
* Проверка полиса в базе данных
|
|||
|
|
* База данных: ci20465_erv
|
|||
|
|
* Таблица: lexrpiority
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
// Устанавливаем заголовки сразу
|
|||
|
|
header('Content-Type: application/json; charset=utf-8');
|
|||
|
|
|
|||
|
|
// Загружаем .env
|
|||
|
|
require_once __DIR__ . '/env_loader.php';
|
|||
|
|
|
|||
|
|
// Логирование
|
|||
|
|
$log_file = __DIR__ . '/logs/policy_check.log';
|
|||
|
|
$log_dir = dirname($log_file);
|
|||
|
|
if (!is_dir($log_dir)) {
|
|||
|
|
@mkdir($log_dir, 0755, true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function log_message($message) {
|
|||
|
|
global $log_file;
|
|||
|
|
$timestamp = date('Y-m-d H:i:s');
|
|||
|
|
@file_put_contents($log_file, "[$timestamp] $message\n", FILE_APPEND);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(isset($_POST['action']) && !empty($_POST['action'])) {
|
|||
|
|
$action = $_POST['action'];
|
|||
|
|
switch($action) {
|
|||
|
|
case 'user_verify' : user_verify(); break;
|
|||
|
|
}
|
|||
|
|
exit; // Важно! Завершаем выполнение после обработки действия
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function user_verify() {
|
|||
|
|
|
|||
|
|
// Тарифы, которые включают покрытие задержки рейса
|
|||
|
|
$valid_tariffs_basic = [
|
|||
|
|
'STB0048', 'STB1099', 'STB1100', 'STB2099', 'AVS21500', 'AVS22500'
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
$valid_tariffs_other = [
|
|||
|
|
'SPV0001', 'SPV0002', 'SPV0003', 'SPV0004', 'SPV0005',
|
|||
|
|
'STV0090',
|
|||
|
|
'SPV1001', 'SPV1002', 'SPV1003', 'SPV1004', 'SPV1005',
|
|||
|
|
'SPV2001', 'SPV2002', 'SPV2004', 'SPV2005',
|
|||
|
|
'OPV1001', 'OPV1002', 'OPV1003', 'OPV1004', 'OPV1005',
|
|||
|
|
'OPV2001', 'OPV2002', 'OPV2004', 'OPV2005'
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
// Получаем креды из .env (с fallback на старые значения для обратной совместимости)
|
|||
|
|
$db_host = env('MYSQL_ERV_HOST', env('MYSQL_CRM_HOST', 'localhost'));
|
|||
|
|
$db_user = env('MYSQL_ERV_USER', 'ci20465_erv');
|
|||
|
|
$db_pass = env('MYSQL_ERV_PASSWORD', 'c7vOXbmG');
|
|||
|
|
$db_name = env('MYSQL_ERV_DB', 'ci20465_erv');
|
|||
|
|
|
|||
|
|
log_message("Попытка подключения к БД: host=$db_host, user=$db_user, db=$db_name");
|
|||
|
|
|
|||
|
|
$link = @mysqli_connect($db_host, $db_user, $db_pass, $db_name);
|
|||
|
|
|
|||
|
|
if (!$link) {
|
|||
|
|
$error = mysqli_connect_error();
|
|||
|
|
log_message("Ошибка подключения к БД: $error");
|
|||
|
|
echo json_encode([
|
|||
|
|
"success" => "false",
|
|||
|
|
"message" => "Ошибка подключения к базе данных: " . $error,
|
|||
|
|
"result" => ""
|
|||
|
|
], JSON_UNESCAPED_UNICODE);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
mysqli_set_charset($link, "utf8");
|
|||
|
|
log_message("Подключение к БД успешно");
|
|||
|
|
|
|||
|
|
$inn = isset($_POST['inn']) ? trim($_POST['inn']) : '';
|
|||
|
|
|
|||
|
|
if (empty($inn)) {
|
|||
|
|
log_message("Номер полиса не указан");
|
|||
|
|
echo json_encode([
|
|||
|
|
"success" => "false",
|
|||
|
|
"message" => "Номер полиса не указан",
|
|||
|
|
"result" => ""
|
|||
|
|
], JSON_UNESCAPED_UNICODE);
|
|||
|
|
mysqli_close($link);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
log_message("Проверка полиса: " . substr($inn, 0, 5) . "***");
|
|||
|
|
|
|||
|
|
// Нормализуем номер полиса: заменяем кириллическую "Е" на латинскую "E"
|
|||
|
|
// Это нужно, т.к. в базе данных используются только латинские буквы
|
|||
|
|
$inn_original = $inn;
|
|||
|
|
$inn = str_replace('Е', 'E', $inn); // Кириллическая Е -> латинская E
|
|||
|
|
$inn = str_replace('е', 'e', $inn); // Кириллическая е -> латинская e (на всякий случай)
|
|||
|
|
$inn = str_replace('А', 'A', $inn); // Кириллическая А -> латинская A
|
|||
|
|
$inn = str_replace('а', 'a', $inn); // Кириллическая а -> латинская a
|
|||
|
|
|
|||
|
|
if ($inn_original !== $inn) {
|
|||
|
|
log_message("Номер полиса нормализован: $inn_original -> $inn");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Экранируем для безопасности
|
|||
|
|
$inn_escaped = mysqli_real_escape_string($link, $inn);
|
|||
|
|
|
|||
|
|
// Ищем полис по номеру voucher
|
|||
|
|
$sql = "SELECT * FROM lexrpiority WHERE voucher = '$inn_escaped' LIMIT 1";
|
|||
|
|
log_message("SQL запрос: SELECT * FROM lexrpiority WHERE voucher = '***'");
|
|||
|
|
|
|||
|
|
$result = mysqli_query($link, $sql);
|
|||
|
|
|
|||
|
|
if (!$result) {
|
|||
|
|
$error = mysqli_error($link);
|
|||
|
|
log_message("Ошибка SQL запроса: $error");
|
|||
|
|
echo json_encode([
|
|||
|
|
"success" => "false",
|
|||
|
|
"message" => "Ошибка запроса к базе данных: " . $error,
|
|||
|
|
"result" => ""
|
|||
|
|
], JSON_UNESCAPED_UNICODE);
|
|||
|
|
mysqli_close($link);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$row = mysqli_fetch_assoc($result);
|
|||
|
|
|
|||
|
|
if (!$row) {
|
|||
|
|
// Полис не найден в базе
|
|||
|
|
log_message("Полис не найден в базе данных");
|
|||
|
|
echo json_encode([
|
|||
|
|
"success" => "false",
|
|||
|
|
"message" => "Полис не найден",
|
|||
|
|
"result" => ""
|
|||
|
|
], JSON_UNESCAPED_UNICODE);
|
|||
|
|
mysqli_close($link);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
log_message("Полис найден в БД. Тарифы: basic=" . ($row['tariff_code_basic'] ?? 'нет') . ", other=" . ($row['tariff_code_other'] ?? 'нет'));
|
|||
|
|
|
|||
|
|
// Полис найден, проверяем тариф
|
|||
|
|
$tariff_basic = isset($row['tariff_code_basic']) ? trim($row['tariff_code_basic']) : '';
|
|||
|
|
$tariff_other = isset($row['tariff_code_other']) ? trim($row['tariff_code_other']) : '';
|
|||
|
|
|
|||
|
|
$has_valid_tariff = in_array($tariff_basic, $valid_tariffs_basic) ||
|
|||
|
|
in_array($tariff_other, $valid_tariffs_other);
|
|||
|
|
|
|||
|
|
if ($has_valid_tariff) {
|
|||
|
|
// Полис найден и тариф подходит
|
|||
|
|
log_message("Полис валиден. Тариф подходит для задержки рейса");
|
|||
|
|
echo json_encode([
|
|||
|
|
"success" => "true",
|
|||
|
|
"message" => "Полис найден",
|
|||
|
|
"result" => $row
|
|||
|
|
], JSON_UNESCAPED_UNICODE);
|
|||
|
|
} else {
|
|||
|
|
// Полис найден, но тариф не включает покрытие задержки рейса
|
|||
|
|
log_message("Полис найден, но тариф не подходит для задержки рейса");
|
|||
|
|
echo json_encode([
|
|||
|
|
"success" => "false",
|
|||
|
|
"message" => "Ваш полис не включает покрытие задержки рейса",
|
|||
|
|
"result" => ""
|
|||
|
|
], JSON_UNESCAPED_UNICODE);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
mysqli_close($link);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
?>
|