Files
pilates-platform/includes/config.php
Francesco Picone 4e41ca9bf7 fix
2025-12-03 18:35:21 +01:00

173 lines
5.5 KiB
PHP

<?php
/**
* File di Configurazione
*
* Contiene tutte le impostazioni del sito: database, email, PayPal, ecc.
* IMPORTANTE: Non condividere mai questo file pubblicamente!
*/
// ============================================
// CONFIGURAZIONE DATABASE
// ============================================
define('DB_HOST', 'localhost'); // Host del database
define('DB_NAME', 'pilates_platform'); // Nome del database
define('DB_USER', 'root'); // Username database
define('DB_PASS', ''); // Password database
define('DB_CHARSET', 'utf8mb4'); // Charset per supportare tutti i caratteri
// ============================================
// CONFIGURAZIONE GENERALE SITO
// ============================================
define('SITE_NAME', 'Pilates Studio');
define('SITE_URL', 'http://localhost/pilates-platform'); // Modifica con il tuo dominio in produzione
define('ADMIN_EMAIL', 'admin@pilatesstudio.com'); // Email amministratore
// ============================================
// CONFIGURAZIONE SICUREZZA
// ============================================
// Chiave segreta per crittografia (CAMBIALA in produzione!)
define('SECRET_KEY', 'cambia-questa-chiave-con-una-stringa-casuale-sicura');
// Durata sessione in secondi (default: 2 ore)
define('SESSION_LIFETIME', 7200);
// Durata token recupero password (default: 1 ora)
define('PASSWORD_RESET_TOKEN_LIFETIME', 3600);
// ============================================
// CONFIGURAZIONE PAYPAL
// ============================================
// Modalità sandbox per test (true) o produzione (false)
define('PAYPAL_SANDBOX', true);
// Credenziali PayPal Sandbox (per test)
define('PAYPAL_CLIENT_ID', 'inserisci-qui-il-tuo-client-id-sandbox');
define('PAYPAL_SECRET', 'inserisci-qui-il-tuo-secret-sandbox');
// Credenziali PayPal Live (per produzione - NON compilare finché non sei pronto!)
define('PAYPAL_LIVE_CLIENT_ID', '');
define('PAYPAL_LIVE_SECRET', '');
// URL API PayPal
define('PAYPAL_API_URL', PAYPAL_SANDBOX ?
'https://api-m.sandbox.paypal.com' :
'https://api-m.paypal.com'
);
// ============================================
// CONFIGURAZIONE EMAIL
// ============================================
// Configurazione per l'invio di email (usa SMTP per produzione)
define('MAIL_FROM', 'noreply@pilatesstudio.com');
define('MAIL_FROM_NAME', 'Pilates Studio');
// Impostazioni SMTP (opzionali - commentate se usi mail() PHP di base)
/*
define('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_PORT', 587);
define('SMTP_USERNAME', 'tua-email@gmail.com');
define('SMTP_PASSWORD', 'tua-password-applicazione');
define('SMTP_ENCRYPTION', 'tls');
*/
// ============================================
// CONFIGURAZIONE UPLOAD FILE
// ============================================
// Cartella per upload file (thumbnails, video se locali)
define('UPLOAD_DIR', __DIR__ . '/../uploads/');
define('UPLOAD_URL', SITE_URL . '/uploads/');
// Dimensione massima file upload (in bytes - default 50MB)
define('MAX_UPLOAD_SIZE', 50 * 1024 * 1024);
// Estensioni permesse per upload
define('ALLOWED_IMAGE_TYPES', ['jpg', 'jpeg', 'png', 'gif', 'webp']);
define('ALLOWED_VIDEO_TYPES', ['mp4', 'mov', 'avi', 'webm']);
// ============================================
// CONFIGURAZIONE VIDEO
// ============================================
// Tipo di hosting video: 'local', 'youtube', 'vimeo', 's3'
define('VIDEO_HOSTING_TYPE', 'local');
// Configurazione AWS S3 (se usi S3)
/*
define('AWS_ACCESS_KEY', 'tua-access-key');
define('AWS_SECRET_KEY', 'tua-secret-key');
define('AWS_REGION', 'eu-west-1');
define('AWS_BUCKET', 'pilates-videos');
*/
// ============================================
// CONFIGURAZIONE TIMEZONE
// ============================================
date_default_timezone_set('Europe/Rome');
// ============================================
// MODALITÀ DEBUG
// ============================================
// Attiva/disattiva visualizzazione errori (FALSE in produzione!)
define('DEBUG_MODE', true);
if (DEBUG_MODE) {
error_reporting(E_ALL);
ini_set('display_errors', 1);
} else {
error_reporting(0);
ini_set('display_errors', 0);
}
// ============================================
// CONNESSIONE DATABASE
// ============================================
/**
* Crea e restituisce la connessione al database
* Usa PDO per sicurezza contro SQL injection
*/
function get_db_connection() {
static $pdo = null;
// Se la connessione esiste già, restituiscila
if ($pdo !== null) {
return $pdo;
}
try {
// Crea stringa DSN (Data Source Name)
$dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=" . DB_CHARSET;
// Opzioni PDO per sicurezza
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // Lancia eccezioni per errori
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // Fetch come array associativo
PDO::ATTR_EMULATE_PREPARES => false, // Usa prepared statements veri
PDO::ATTR_PERSISTENT => false, // Non usare connessioni persistenti
];
// Crea connessione PDO
$pdo = new PDO($dsn, DB_USER, DB_PASS, $options);
return $pdo;
} catch (PDOException $e) {
// In caso di errore di connessione
if (DEBUG_MODE) {
die("Errore connessione database: " . $e->getMessage());
} else {
die("Errore di connessione al database. Contatta l'amministratore.");
}
}
}
?>