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 🔒
| Risque | Solution |
|---|---|
| Injection SQL | ✅ Requê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();
}
?>