Confection de la base de données - Yhernam/Stage GitHub Wiki

Création de la base de données du site

Etape 1 : Configuration de la base de données

-- Créez une base de données
CREATE DATABASE mydatabase;

-- Utilisez la base de données
USE mydatabase;

-- Créez une table des administrateurs
CREATE TABLE admins (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL
);

Hacher un mot de passe

<?php
$passwordHash = password_hash('ah', PASSWORD_BCRYPT);
echo $passwordHash;
?>

Insérer un administrateur avec un mot de passe haché

INSERT INTO admins (username, password) VALUES ('admin', 'hash_du_mot_de_passe');

Etape 2 : Formulaire de connexion

Création du fichier html : connexion.html

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Connexion Admin</title>
</head>
<body>
    <form action="login.php" method="POST">
        <label for="username">Nom d'utilisateur :</label>
        <input type="text" id="username" name="username" required><br><br>
        <label for="password">Mot de passe :</label>
        <input type="password" id="password" name="password" required><br><br>
        <input type="submit" value="Se connecter">
    </form>
</body>
</html>

Etape 3 : Script PHP pour traier la connexion

Créer un fichier connexion.php

<?php
session_start();

// Connexion à la base de données
$host = 'localhost';
$dbname = 'mydatabase';
$username = 'root'; // remplacez par votre nom d'utilisateur de base de données
$password = ''; // remplacez par votre mot de passe de base de données

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Erreur de connexion : " . $e->getMessage());
}

// Récupérer les données du formulaire
$form_username = $_POST['username'];
$form_password = $_POST['password'];

// Requête pour récupérer l'utilisateur
$sql = "SELECT * FROM admins WHERE username = :username";
$stmt = $pdo->prepare($sql);
$stmt->execute(['username' => $form_username]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

if ($user && password_verify($form_password, $user['password'])) {
    // Authentification réussie
    $_SESSION['admin_logged_in'] = true;
    $_SESSION['admin_username'] = $user['username'];
    header("Location: admin/admin.html");
    exit;
} else {
    // Authentification échouée
    echo "Nom d'utilisateur ou mot de passe incorrect.";
}
?>

Etape 4 : Tableau de bord admin (optionnel)

Ajouter en haut du fichier : admin.html

<?php
session_start();

// Vérifier si l'administrateur est connecté
if (!isset($_SESSION['admin_logged_in']) || $_SESSION['admin_logged_in'] !== true) {
    header("Location: login.html");
    exit;
}

echo "Bienvenue, " . $_SESSION['admin_username'] . "! Vous êtes connecté au tableau de bord admin.";
?>

<a href="deconnexion.php">Déconnexion</a>

Etape 5 : Déconnexion

Créer un fichier : deconnexion.php

<?php
session_start();
session_unset();
session_destroy();

header("Location: login.html");
exit;
?>

Sécurité

Pour garantir la sécurité :

  • Utiliser password_hash pour stocker les mots de passe hachés.
  • Utiliser des requêtes préparées pour éviter les injections SQL.
  • Mettre en oeuvre des mesures de sécurité supplémentaire (comme la protection CSRF) si nécessaire.
⚠️ **GitHub.com Fallback** ⚠️