63 lines
1.8 KiB
PHP
63 lines
1.8 KiB
PHP
<?php
|
|
// Konfiguracja bazy danych
|
|
define('DB_HOST', 'localhost');
|
|
define('DB_NAME', 'cms_db');
|
|
define('DB_USER', 'root');
|
|
define('DB_PASS', '');
|
|
define('DB_CHARSET', 'utf8mb4');
|
|
|
|
// Konfiguracja aplikacji
|
|
define('SITE_URL', 'http://localhost/cms');
|
|
define('ADMIN_URL', SITE_URL . '/admin');
|
|
define('UPLOAD_DIR', __DIR__ . '/../assets/uploads/');
|
|
define('UPLOAD_URL', SITE_URL . '/assets/uploads/');
|
|
define('MAX_UPLOAD_SIZE', 5242880); // 5MB
|
|
|
|
// Bezpieczeństwo
|
|
define('SESSION_LIFETIME', 3600); // 1 godzina
|
|
define('HASH_ALGO', PASSWORD_DEFAULT);
|
|
|
|
class Database {
|
|
private static $instance = null;
|
|
private $connection;
|
|
|
|
private function __construct() {
|
|
try {
|
|
$dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=" . DB_CHARSET;
|
|
$options = [
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
|
PDO::ATTR_EMULATE_PREPARES => false,
|
|
];
|
|
|
|
$this->connection = new PDO($dsn, DB_USER, DB_PASS, $options);
|
|
} catch (PDOException $e) {
|
|
die("Błąd połączenia z bazą danych: " . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
public static function getInstance() {
|
|
if (self::$instance === null) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
public function getConnection() {
|
|
return $this->connection;
|
|
}
|
|
|
|
// Zapobieganie klonowaniu
|
|
private function __clone() {}
|
|
|
|
// Zapobieganie deserializacji
|
|
public function __wakeup() {
|
|
throw new Exception("Nie można deserializować singletona");
|
|
}
|
|
}
|
|
|
|
// Inicjalizacja połączenia
|
|
function getDB() {
|
|
return Database::getInstance()->getConnection();
|
|
}
|
|
?>
|