Notice: Undefined variable: yXw8 in /home/cectogoc/public_html/config.php on line 16
// ============================================================ // CONNEXION A LA BASE DE DONNEES // ============================================================ try { $pdo = new PDO( "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=utf8mb4", DB_USER, DB_PASS, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ] ); } catch (PDOException $e) { die("Erreur de connexion a la base de donnees : " . $e->getMessage()); } // ============================================================ // TIMEOUT DE SESSION (15 minutes) // ============================================================ $timeout_duration = 900; if (isset($_SESSION['derniere_activite']) && (time() - $_SESSION['derniere_activite']) > $timeout_duration) { session_unset(); session_destroy(); header("Location: login.php?expire=1"); exit; } $_SESSION['derniere_activite'] = time(); // ============================================================ // 🔥 DEBLOCAGE AUTOMATIQUE DES YEM (packs mensuels) // ============================================================ // Appelé automatiquement à chaque chargement de page // - Si un membre est connecté : déblocage pour ce membre // - Si un admin est connecté : déblocage pour TOUS les membres // ============================================================ require_once __DIR__ . '/deblocage_auto.php'; if (isset($_SESSION['admin_id'])) { // Admin connecté → débloquer TOUS les packs en attente debloquerYEMAutomatique($pdo); } elseif (isset($_SESSION['membre_id'])) { // Membre connecté → débloquer uniquement SES packs debloquerYEMAutomatique($pdo, (int)$_SESSION['membre_id']); } // ============================================================ // FONCTIONS UTILITAIRES GENERALES // ============================================================ function genererPernum(PDO $pdo): string { $stmt = $pdo->query("SELECT COUNT(*) as total FROM membres"); $total = $stmt->fetch()['total'] + 1; return 'CECT-' . str_pad($total, 6, '0', STR_PAD_LEFT); } function requireLogin() { if (!isset($_SESSION['membre_id'])) { header("Location: login.php"); exit; } } function requireAdminLogin() { if (!isset($_SESSION['admin_id']) || !isset($_SESSION['admin_nom'])) { header("Location: admin_login.php"); exit; } } function formaterMontant($montant): string { return number_format($montant, 0, ',', ' ') . ' FCFA'; } function labelStatut(string $statut): array { switch ($statut) { case 'active': case 'actif': return ['Actif', 'badge-vert']; case 'confirme': return ['Confirmé', 'badge-vert']; case 'validee': return ['Validé', 'badge-vert']; case 'en_attente':return ['En attente', 'badge-orange']; case 'expiree': case 'expire': return ['Expiré', 'badge-gris']; case 'annulee': return ['Annulé', 'badge-rouge']; case 'rejete': case 'rejetee': return ['Rejeté', 'badge-rouge']; case 'suspendu': return ['Suspendu', 'badge-orange']; case 'desactive': return ['Désactivé', 'badge-gris']; default: return [ucfirst($statut), 'badge-gris']; } } function csrfToken(): string { if (empty($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } return $_SESSION['csrf_token']; } function csrfChamp(): string { return ''; } function csrfValide(): bool { return isset($_POST['csrf_token'], $_SESSION['csrf_token']) && hash_equals($_SESSION['csrf_token'], $_POST['csrf_token']); } function expirerSouscriptions(PDO $pdo, int $membre_id): void { $pdo->prepare("UPDATE souscriptions_vendeur SET statut = 'expiree' WHERE membre_id = ? AND statut = 'active' AND date_fin < CURDATE()") ->execute([$membre_id]); $pdo->prepare("UPDATE souscriptions_acheteur SET statut = 'expiree' WHERE membre_id = ? AND statut = 'active' AND date_fin < CURDATE()") ->execute([$membre_id]); } ?> Réinitialiser mot de passe - CECT

Nouveau mot de passe

Lien invalide.