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
Cooperative CECT
Nouveau mot de passe
Lien invalide.