Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

Fatal error: Cannot redeclare Хелпу пж

Авг
4
1
Пользователь
Доброго времени суток.
В логах такая ошибка:
log:
[B]Fatal error[/B]: Cannot redeclare get_db_connection() (previously declared in /var/www/ws331/data/www/домен/global/general/config.php:23) in [B]/var/www/ws331/data/www/домен/global/general/config.php[/B] on line [B]23[/B]
Содержание config.php:
config.php:
<?php
ini_set('session.gc_maxlifetime', 2560000);
session_set_cookie_params([
    'lifetime' => 2560000,
    'path'     => '/',
    'domain'   => 'https://www.домен.ru',
    'secure'   => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',
    'httponly' => true,
    'samesite' => 'ччччччччч'
]);
session_start();

// коннект к базе
$db_host     = "ччччччччч";
$db_user     = "ччччччччч";
$db_password = "ччччччч";
$db_name     = "чччччччч";

$sitename = "чччччччч";
$botToken = ""; // токен ТГ бота
$chatId = "";

function get_db_connection() {
    static $conn = null;
    if ($conn === null) {
        try {
            $dsn = "mysql:host={$GLOBALS['db_host']};dbname={$GLOBALS['db_name']};charset=utf8mb4";
            $options = [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::ATTR_EMULATE_PREPARES   => false,
            ];
            $conn = new PDO($dsn, $GLOBALS['db_user'], $GLOBALS['db_password'], $options);
        } catch (PDOException $e) {
            error_log("PDOException: " . $e->getMessage() );
            die(json_encode(["error" => "Ошибка подключения: " . $e->getMessage()]));
        }
    }
    return $conn;
}
function sanitize_input($data) {
    return htmlspecialchars(strip_tags(trim($data)), ENT_QUOTES, 'UTF-8');
}
$allowed_pages = ['login.php', 'register.php', 'bot.php'];
$excluded_dirs = ['global'];
$current_page = basename($_SERVER['PHP_SELF']);
$current_dir  = basename(dirname($_SERVER['PHP_SELF']));
if (in_array($current_dir, $excluded_dirs)) {
    return;
}
$conn = get_db_connection();
if (!isset($_SESSION['user_id']) && isset($_COOKIE['session_token'])) {
    $session_token = sanitize_input($_COOKIE['session_token']);
  
    $stmt = $conn->prepare("SELECT user_id FROM user_sessions WHERE session_token = ? AND expires_at > NOW()");
    $stmt->execute([$session_token]);
    $user = $stmt->fetch();
    if ($user) {
        $_SESSION['user_id'] = $user['user_id'];
        session_regenerate_id(true);
    } else {
        setcookie("session_token", "", time() - 3600, "/", "", isset($_SERVER['HTTPS']), true);
    }
}
if (isset($_SESSION['user_id'])) {
    $stmt = $conn->prepare("SELECT admin, first_name, last_name, email FROM users WHERE id = :id");
    $stmt->execute([':id' => $_SESSION['user_id']]);
    $user_data = $stmt->fetch();
    if ($user_data) {
        $_SESSION['admin']      = $user_data['admin'];
        $_SESSION['first_name'] = $user_data['first_name'];
        $_SESSION['last_name']  = $user_data['last_name'];
        $_SESSION['email']      = $user_data['email'];
    }
}
if (!isset($_SESSION['user_id']) && !in_array($current_page, $allowed_pages)) {
    if (!headers_sent()) {
        header("Location: login.php");
        exit();
    } else {
        die("<script>window.location.href = 'login.php';</script>");
    }
}
function is_rate_limited() {
    $now = time();
    if (!isset($_SESSION['requests'])) {
        $_SESSION['requests'] = [];
    }
    $_SESSION['requests'] = array_filter($_SESSION['requests'], function($t) use ($now) {
        return ($now - $t) < 60;
    });
    if (count($_SESSION['requests']) >= 50) {
        return true;
    }
    $_SESSION['requests'][] = $now;
    return false;
}
if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['query'])) {
    header('Content-Type: application/json');
    if (is_rate_limited()) {
        echo json_encode(["error" => "Слишком много запросов, попробуйте позже."]);
    } else {
        echo json_encode(["message" => "Запрос получен, но обработка не реализована."]);
    }
    exit;
}
?>
 
Решение
/offtop
Доброго времени суток.
В логах такая ошибка:
log:
[B]Fatal error[/B]: Cannot redeclare get_db_connection() (previously declared in /var/www/ws331/data/www/домен/global/general/config.php:23) in [B]/var/www/ws331/data/www/домен/global/general/config.php[/B] on line [B]23[/B]
Содержание config.php:
config.php:
<?php
ini_set('session.gc_maxlifetime', 2560000);
session_set_cookie_params([
    'lifetime' => 2560000,
    'path'     => '/',
    'domain'   => 'https://www.домен.ru',
    'secure'   => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',
    'httponly' => true,
    'samesite' => 'ччччччччч'
]);
session_start();

// коннект к базе
$db_host     = "ччччччччч";
$db_user     = "ччччччччч";
$db_password = "ччччччч";
$db_name     =...
Июн
65
54
Заблокированный
2.20. Запрещено публиковать ответы, сгенерированные при помощи ChatGPT или аналогичных ИИ-моделей.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
/offtop
Доброго времени суток.
В логах такая ошибка:
log:
[B]Fatal error[/B]: Cannot redeclare get_db_connection() (previously declared in /var/www/ws331/data/www/домен/global/general/config.php:23) in [B]/var/www/ws331/data/www/домен/global/general/config.php[/B] on line [B]23[/B]
Содержание config.php:
config.php:
<?php
ini_set('session.gc_maxlifetime', 2560000);
session_set_cookie_params([
    'lifetime' => 2560000,
    'path'     => '/',
    'domain'   => 'https://www.домен.ru',
    'secure'   => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',
    'httponly' => true,
    'samesite' => 'ччччччччч'
]);
session_start();

// коннект к базе
$db_host     = "ччччччччч";
$db_user     = "ччччччччч";
$db_password = "ччччччч";
$db_name     = "чччччччч";

$sitename = "чччччччч";
$botToken = ""; // токен ТГ бота
$chatId = "";

function get_db_connection() {
    static $conn = null;
    if ($conn === null) {
        try {
            $dsn = "mysql:host={$GLOBALS['db_host']};dbname={$GLOBALS['db_name']};charset=utf8mb4";
            $options = [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::ATTR_EMULATE_PREPARES   => false,
            ];
            $conn = new PDO($dsn, $GLOBALS['db_user'], $GLOBALS['db_password'], $options);
        } catch (PDOException $e) {
            error_log("PDOException: " . $e->getMessage() );
            die(json_encode(["error" => "Ошибка подключения: " . $e->getMessage()]));
        }
    }
    return $conn;
}
function sanitize_input($data) {
    return htmlspecialchars(strip_tags(trim($data)), ENT_QUOTES, 'UTF-8');
}
$allowed_pages = ['login.php', 'register.php', 'bot.php'];
$excluded_dirs = ['global'];
$current_page = basename($_SERVER['PHP_SELF']);
$current_dir  = basename(dirname($_SERVER['PHP_SELF']));
if (in_array($current_dir, $excluded_dirs)) {
    return;
}
$conn = get_db_connection();
if (!isset($_SESSION['user_id']) && isset($_COOKIE['session_token'])) {
    $session_token = sanitize_input($_COOKIE['session_token']);
 
    $stmt = $conn->prepare("SELECT user_id FROM user_sessions WHERE session_token = ? AND expires_at > NOW()");
    $stmt->execute([$session_token]);
    $user = $stmt->fetch();
    if ($user) {
        $_SESSION['user_id'] = $user['user_id'];
        session_regenerate_id(true);
    } else {
        setcookie("session_token", "", time() - 3600, "/", "", isset($_SERVER['HTTPS']), true);
    }
}
if (isset($_SESSION['user_id'])) {
    $stmt = $conn->prepare("SELECT admin, first_name, last_name, email FROM users WHERE id = :id");
    $stmt->execute([':id' => $_SESSION['user_id']]);
    $user_data = $stmt->fetch();
    if ($user_data) {
        $_SESSION['admin']      = $user_data['admin'];
        $_SESSION['first_name'] = $user_data['first_name'];
        $_SESSION['last_name']  = $user_data['last_name'];
        $_SESSION['email']      = $user_data['email'];
    }
}
if (!isset($_SESSION['user_id']) && !in_array($current_page, $allowed_pages)) {
    if (!headers_sent()) {
        header("Location: login.php");
        exit();
    } else {
        die("<script>window.location.href = 'login.php';</script>");
    }
}
function is_rate_limited() {
    $now = time();
    if (!isset($_SESSION['requests'])) {
        $_SESSION['requests'] = [];
    }
    $_SESSION['requests'] = array_filter($_SESSION['requests'], function($t) use ($now) {
        return ($now - $t) < 60;
    });
    if (count($_SESSION['requests']) >= 50) {
        return true;
    }
    $_SESSION['requests'][] = $now;
    return false;
}
if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['query'])) {
    header('Content-Type: application/json');
    if (is_rate_limited()) {
        echo json_encode(["error" => "Слишком много запросов, попробуйте позже."]);
    } else {
        echo json_encode(["message" => "Запрос получен, но обработка не реализована."]);
    }
    exit;
}
?>
Ошибка, которую вы видите, возникает из-за повторного объявления функции get_db_connection() . Это происходит потому, что функция уже была объявлена ранее в файле config.php на строке 23.
Чтобы исправить эту ошибку, убедитесь, что функция get_db_connection() объявляется только один раз. Вот как можно исправить ваш код:
1. Проверьте, что функция get_db_connection() объявлена только в одном месте в файле config.php .
2. Убедитесь, что файл config.php не включается дважды.
Пример правильного объявления функции:

PHP:
<?php
ini_set('session.gc_maxlifetime', 2560000);
session_set_cookie_params([
'lifetime' => 2560000,
'path' => '/',
'domain' => 'https://www.домен.ru',
'secure' => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',
'httponly' => true,
'samesite' => 'ччччччччч'
]);
session_start();

// Коннект к базе
$db_host = "ччччччччч";
$db_user = "ччччччччч";
$db_password = "ччччччч";
$db_name = "чччччччч";

$sitename = "чччччччч";
$botToken = ""; // Токен ТГ бота
$chatId = "";

function get_db_connection() {
static $conn = null;
if ($conn === null) {
try {
$dsn = "mysql:host={$GLOBALS['db_host']};dbname={$GLOBALS['db_name']};charset=utf8mb4";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$conn = new PDO($dsn, $GLOBALS['db_user'], $GLOBALS['db_password'], $options);
} catch (PDOException $e) {
error_log("PDOException: ". $e->getMessage());
die(json_encode(["error" => "Ошибка подключения: ". $e->getMessage()]));
}
}
return $conn;
}

function sanitize_input($data) {
return htmlspecialchars(strip_tags(trim($data)), ENT_QUOTES, 'UTF-8');
}

$allowed_pages = ['login.php', 'register.php', 'bot.php'];
$excluded_dirs = ['global'];
$current_page = basename($_SERVER['PHP_SELF']);
$current_dir = basename(dirname($_SERVER['PHP_SELF']));

if (in_array($current_dir, $excluded_dirs)) {
return;
}

$conn = get_db_connection();

// Остальной код...

Убедитесь, что функция get_db_connection() вызывается только после её объявления и что файл config.php не включается повторно.
 
Последнее редактирование модератором:
Rising Star?
Июн
2,896
2,204
Редактор
/offtop

Ошибка, которую вы видите, возникает из-за повторного объявления функции get_db_connection() . Это происходит потому, что функция уже была объявлена ранее в файле config.php на строке 23.
Чтобы исправить эту ошибку, убедитесь, что функция get_db_connection() объявляется только один раз. Вот как можно исправить ваш код:
1. Проверьте, что функция get_db_connection() объявлена только в одном месте в файле config.php .
2. Убедитесь, что файл config.php не включается дважды.
Пример правильного объявления функции:

<?php
ini_set('session.gc_maxlifetime', 2560000);
session_set_cookie_params([
'lifetime' => 2560000,
'path' => '/',
'domain' => 'https://www.домен.ru',
'secure' => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',
'httponly' => true,
'samesite' => 'ччччччччч'
]);
session_start();

// Коннект к базе
$db_host = "ччччччччч";
$db_user = "ччччччччч";
$db_password = "ччччччч";
$db_name = "чччччччч";

$sitename = "чччччччч";
$botToken = ""; // Токен ТГ бота
$chatId = "";

function get_db_connection() {
static $conn = null;
if ($conn === null) {
try {
$dsn = "mysql:host={$GLOBALS['db_host']};dbname={$GLOBALS['db_name']};charset=utf8mb4";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$conn = new PDO($dsn, $GLOBALS['db_user'], $GLOBALS['db_password'], $options);
} catch (PDOException $e) {
error_log("PDOException: ". $e->getMessage());
die(json_encode(["error" => "Ошибка подключения: ". $e->getMessage()]));
}
}
return $conn;
}

function sanitize_input($data) {
return htmlspecialchars(strip_tags(trim($data)), ENT_QUOTES, 'UTF-8');
}

$allowed_pages = ['login.php', 'register.php', 'bot.php'];
$excluded_dirs = ['global'];
$current_page = basename($_SERVER['PHP_SELF']);
$current_dir = basename(dirname($_SERVER['PHP_SELF']));

if (in_array($current_dir, $excluded_dirs)) {
return;
}

$conn = get_db_connection();

// Остальной код...

Убедитесь, что функция get_db_connection() вызывается только после её объявления и что файл config.php не включается повторно.
2.20. Запрещено публиковать ответы, сгенерированные при помощи ChatGPT или аналогичных ИИ-моделей.

молодец гпт кодер, лучше дай знающим людям ответить
 
Июн
65
54
Заблокированный
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
2.20. Запрещено публиковать ответы, сгенерированные при помощи ChatGPT или аналогичных ИИ-моделей.

молодец гпт кодер, лучше дай знающим людям ответить
Даже если я правила этого не знал да!?
 
Июн
65
54
Заблокированный
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
конечно, незнание правил не освобождает от ответственности
Нет Регламента там например бан 30 дней,варн и т.д
 
𝚖𝚘𝚛𝚜 𝚌𝚎𝚛𝚝𝚊, 𝚑𝚘𝚛𝚊 𝚒𝚗𝚌𝚎𝚛𝚝𝚊.
Янв
1,606
3,633
Команда форума
Администратор

Вложения

  • IMG_0009.png
    IMG_0009.png
    269.1 KB · Просмотры: 12
  • IMG_0010.png
    IMG_0010.png
    539.1 KB · Просмотры: 12
Июн
65
54
Заблокированный
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
OFFTOP

вообще-то есть)

Там не написано где Время бана - спам я имею типо наказание
 
Июн
65
54
Заблокированный
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
а ещё чё то по мимо конфига можешь дать всё таки? ты же инклудишь его куда то
Посмотри в низу в самом строчки и конект базе данных
 
Июн
65
54
Заблокированный
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
OFFTOP

вообще-то есть)

Не ври нету у меня
 
Сверху