File size: 1.86Kb
<?php
// Помощник для перенаправления
if (!function_exists('redirect_to_install')) {
function redirect_to_install()
{
$isInApi = strpos($_SERVER['REQUEST_URI'], '/api/') !== false;
$url = $isInApi ? '../install.php' : 'install.php';
if (!headers_sent()) {
header("Location: $url");
} else {
echo "<script>window.location.href='$url';</script>";
echo "<meta http-equiv='refresh' content='0;url=$url'>";
}
exit;
}
}
// Загрузка конфигурации, если она существует
if (file_exists(__DIR__ . '/config.php')) {
require __DIR__ . '/config.php';
}
// Значения по умолчанию
$host = $db_host ?? 'localhost';
$db = $db_name ?? 'chat';
$user = $db_user ?? 'root';
$pass = $db_pass ?? '';
$charset = 'utf8mb4';
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=$charset", $user, $pass, $options);
// Проверка существования таблиц (верификация установки)
if (basename($_SERVER['SCRIPT_NAME']) != 'install.php') {
try {
// Попытка выбрать данные из критически важной таблицы, чтобы убедиться, что установка завершена
$pdo->query("SELECT 1 FROM users LIMIT 1");
} catch (\PDOException $e) {
redirect_to_install();
}
}
} catch (\PDOException $e) {
// Ошибка подключения
if (basename($_SERVER['SCRIPT_NAME']) != 'install.php') {
redirect_to_install();
}
}