Tp 2 php render redirect blogpoo
Thème :
Junior
1 vues ·16/30 leçons

Page 16 : Ajout d’un Article - Le Guide Pas à Pas (Logique)

Créer un article est un processus qui se décompose en 6 étapes logiques. En tant qu’ingénieur, nous allons “découper” le fichier admin-add-article.php pour comprendre chaque rouage.

Étape 1 : Initialisation et Sécurité

Tout fichier sensible doit commencer par identifier qui a le droit d’y accéder.

<?php
declare(strict_types=1);
session_start();
require_once 'database/database.php';
require_once 'helpers.php';

// Le mur de sécurité
require_once 'app/Emuns/Role.php';
if (!isset($_SESSION['auth']) || !is_array($_SESSION['auth']) || $_SESSION['auth']['role'] !== Role::ADMIN->value) {
    header('Location: index.php');
    exit();
}
  • Analyse : On charge les outils (database, helpers) et on vérifie le rôle. Si vous n’êtes pas admin, le script s’arrête là (exit).

Étape 2 : Détection de la soumission

On ne traite les données que si l’utilisateur a cliqué sur le bouton “Ajouter”.

if (isset($_POST['add-article'])) {
    // Le code de traitement commence ici...
}

Étape 3 : Nettoyage des données (Sanitization)

C’est ici qu’on applique la règle d’or : “Ne jamais faire confiance aux entrées utilisateur”.

    $title = clean_input((string) ($_POST['title'] ?? ''));
    $slug = createSlug($title);
    $introduction = clean_input((string) ($_POST['introduction'] ?? ''));
    $content = $_POST['content'];
    $imagePath = null;
  • Analyse : clean_input retire les balises HTML et les espaces inutiles. createSlug transforme votre titre en une URL propre (ex: “Mon Titre” -> “mon-titre”).

Étape 4 : Validation et Unicité

Avant d’écrire en base de données, on vérifie que tout est correct.

    if (empty($title) || empty($slug) || empty($introduction) || empty($content)) {
        $error = 'Veuillez remplir tous les champs obligatoires !';
    } else {
        // On vérifie si le lien (slug) n'existe pas déjà
        $stmt = $pdo->prepare('SELECT COUNT(*) FROM articles WHERE slug = :slug');
        $stmt->execute(['slug' => $slug]);

        if ($stmt->fetchColumn() > 0) {
            $error = "Ce titre est déjà utilisé, le lien (slug) doit être unique.";
        } else {
            // Étape suivante...
        }
    }

Étape 5 : L’Enregistrement final

Si tout est valide, on enregistre l’article.

            $query = $pdo->prepare('INSERT INTO articles
              (title, slug, introduction, content, image, created_at)
              VALUES (:title, :slug, :introduction, :content, :image, NOW())');

            $query->execute([
                'title' => $title,
                'slug' => $slug,
                'introduction' => $introduction,
                'content' => $content,
                'image' => $imagePath, // Traité en page 17
            ]);

Étape 6 : Redirection et Confirmation

Une fois fini, on informe l’utilisateur.

            if ($query->rowCount() > 0) {
                $_SESSION['success']['update'] = 'Article créé avec succès!';
                header('Location: admin-list-article.php');
                exit();
            }
  • Analyse : On stocke le message de succès en session pour qu’il “survive” à la redirection vers la liste des articles.

La gestion spécifique des images est détaillée dans la page suivante pour ne pas surcharger ce chapitre.

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur Page 16 : Ajout d'un Article - Le Guide Pas à Pas (Logique). Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.