Skip to content
Snippets Groups Projects
Commit bc35c0a0 authored by VoidOma's avatar VoidOma
Browse files

Correction BDD, securisation config.php

parent 38c3b5f2
No related branches found
No related tags found
1 merge request!1MergeRequest_1
<?php
// Définir l'environnement de l'application ('dev' ou 'prod')
define('ENV', 'dev');
// Informations de connexion à la base de données
$host = '127.0.0.1';
$db = 'tennisclub';
$db = 'tennis';
$user = 'root';
$pass = '';
$pass = ''; // En production, utilise un mot de passe fort et stocké dans une variable d’environnement
$charset = 'utf8mb4';
// Construction du DSN
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
// Options PDO sécurisées
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // Exceptions en cas d'erreur SQL
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // Récupère les résultats sous forme de tableau associatif
PDO::ATTR_EMULATE_PREPARES => false, // Utilise les vraies requêtes préparées de MySQL
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
} catch (PDOException $e) {
if (ENV === 'dev') {
// En développement, affiche l'erreur
die("Erreur de connexion à la base de données : " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));
} else {
// En production, n'affiche rien au visiteur et log l'erreur
error_log('Erreur PDO : ' . $e->getMessage());
die("Une erreur interne est survenue. Merci de réessayer plus tard.");
}
}
?>
<?php
include '../config/config.php';
// Démarrer la session si elle n'est pas déjà active
if (session_status() === PHP_SESSION_NONE) {
session_start();
// Affichage des erreurs en environnement de développement uniquement (à désactiver en prod)
if (!defined('ENV') || ENV === 'dev') {
ini_set('display_errors', 1);
error_reporting(E_ALL);
} else {
ini_set('display_errors', 0);
error_reporting(0);
}
if (isset($_SESSION['user']['id'])) {
$sql = "SELECT statut FROM membre WHERE idMembre = :idMembre";
$stmt = $pdo->prepare($sql);
$stmt->execute([':idMembre' => $_SESSION['user']['id']]);
$result = $stmt->fetch();
// Définition des chemins
define('ROOT_PATH', realpath(__DIR__ . '/..'));
define('PUBLIC_PATH', ROOT_PATH . '/public');
define('ASSETS_PATH', ROOT_PATH . '/assets');
if ($result) {
$_SESSION['user']['statut'] = $result['statut'];
}
// Inclusion unique de la configuration (sessions, PDO, etc.)
require_once ROOT_PATH . '/config/config.php';
// Démarrage de session sécurisé
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
// Inclure la configuration de la base de données
require_once __DIR__ . '/../config/config.php';
// Mise à jour du statut de l'utilisateur connecté
if (isset($_SESSION['user']) && is_array($_SESSION['user']) && isset($_SESSION['user']['id'])) {
$idMembre = (int) $_SESSION['user']['id'];
// Gestion des erreurs pour faciliter le débogage (à désactiver en production)
ini_set('display_errors', 1);
error_reporting(E_ALL);
try {
$sql = "SELECT statut FROM membre WHERE idMembre = :idMembre";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':idMembre', $idMembre, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
// Assure-toi que les chemins de fichiers fonctionnent toujours correctement
define('ROOT_PATH', realpath(__DIR__ . '/..'));
define('PUBLIC_PATH', ROOT_PATH . '/public');
define('ASSETS_PATH', ROOT_PATH . '/assets');
if ($result && isset($result['statut'])) {
$_SESSION['user']['statut'] = htmlspecialchars($result['statut'], ENT_QUOTES, 'UTF-8');
}
} catch (PDOException $e) {
// Ne jamais afficher les messages d'erreur bruts en production
if (defined('ENV') && ENV === 'dev') {
die("Erreur SQL : " . $e->getMessage());
} else {
error_log($e->getMessage());
}
}
}
?>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment