Logo

Documentation

/home/vhsh1501/documentation.benjamin-bruant.com/wp-content/themes/zetheme/single.phpsingle

Exemple transmission donnée

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Formulaire Prénom</title>
</head>
<body>
    <form action="traitement.php" method="POST">
        <label for="prenom">Prénom :</label>
        <input type="text" id="prenom" name="prenom" required>
        <button type="submit">Envoyer</button>
    </form>
</body>
</html>
<?php
// Connexion à la base de données MySQL
$host = 'localhost';
$dbname = 'mon_base';
$username = 'root';
$password = '';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Préparation de la requête (protège contre les injections SQL)
    $sql = "INSERT INTO utilisateurs (prenom) VALUES (:prenom)";
    $stmt = $pdo->prepare($sql);

    // Récupération et nettoyage de la valeur
    $prenom = trim($_POST['prenom']);

    // Exécution avec la valeur sécurisée
    $stmt->execute([':prenom' => $prenom]);

    echo "✅ Prénom enregistré avec succès !";

} catch (PDOException $e) {
    echo "❌ Erreur : " . $e->getMessage();
}
?>
CREATE TABLE utilisateurs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    prenom VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Sécurité à respecter 🔒

RisqueSolution
Injection SQLRequêtes préparées (PDO) comme montré ci-dessus
XSS✅ Utiliser htmlspecialchars() lors de l’affichage
Données vides✅ Vérifier avec empty() ou trim()
Erreurs exposées❌ Désactiver display_errors en production
<?php
// Paramètres de connexion MySQL
$host = 'localhost';
$dbname = 'mon_base';
$username = 'root';
$password = '';

try {
    // Connexion à la base de données
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Récupération des données
    $stmt = $pdo->query("SELECT * FROM utilisateurs ORDER BY created_at DESC");

    echo "<table border='1'>";
    echo "<tr><th>ID</th><th>Prénom</th><th>Date d'enregistrement</th></tr>";

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo "<tr>";
        echo "<td>" . htmlspecialchars($row['id']) . "</td>";
        echo "<td>" . htmlspecialchars($row['prenom']) . "</td>";
        echo "<td>" . htmlspecialchars($row['created_at']) . "</td>";
        echo "</tr>";
    }

    echo "</table>";

} catch (PDOException $e) {
    echo "❌ Erreur de connexion : " . $e->getMessage();
}
?>

Variante améliorée avec message si aucun résultat

<?php
$host = 'localhost';
$dbname = 'mon_base';
$username = 'root';
$password = '';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $pdo->query("SELECT * FROM utilisateurs ORDER BY created_at DESC");
    $donnees = $stmt->fetchAll(PDO::FETCH_ASSOC);

    if (empty($donnees)) {
        echo "<p>Aucune donnée enregistrée.</p>";
    } else {
        echo "<table border='1' cellpadding='5'>";
        echo "<tr><th>ID</th><th>Prénom</th><th>Date</th></tr>";

        foreach ($donnees as $row) {
            echo "<tr>";
            echo "<td>" . htmlspecialchars($row['id']) . "</td>";
            echo "<td>" . htmlspecialchars($row['prenom']) . "</td>";
            echo "<td>" . htmlspecialchars($row['created_at']) . "</td>";
            echo "</tr>";
        }

        echo "</table>";
        echo "<p>Total : " . count($donnees) . " enregistrement(s)</p>";
    }

} catch (PDOException $e) {
    echo "❌ Erreur : " . $e->getMessage();
}
?>