0Pricing
PHP Academy · Leçon

Techniques de validation des entrées

Vérifier les champs obligatoires, les types et les longueurs avant le traitement.

Techniques de validation des entrées est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.

Pourquoi valider les données saisies ?

Ne faites jamais confiance aux données fournies par les utilisateurs. La validation garantit que les données respectent vos exigences avant leur traitement. Elle évite :

  • les erreurs de base de données dues à des types incorrects
  • les bogues de logique métier dus à des valeurs inattendues
  • les failles de sécurité dues à des données saisies malveillantes

Vérification des champs obligatoires

Vérifiez que les champs obligatoires ne sont pas vides après suppression des espaces superflus :

<?php
$errors = [];
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');

if (empty($name)) {
    $errors['name'] = 'Name is required';
}
if (empty($email)) {
    $errors['email'] = 'Email is required';
}

if (!empty($errors)) {
    // show errors
}

Validation du type

Vérifiez que les valeurs sont du type attendu avant de les utiliser :

<?php
$age = $_POST['age'] ?? '';

// Method 1: filter_var
$validAge = filter_var($age, FILTER_VALIDATE_INT, [
    'options' => ['min_range' => 1, 'max_range' => 120]
]);

if ($validAge === false) {
    $errors[] = 'Age must be a number between 1 and 120';
}

Validation des adresses e-mail

Validez les adresses e-mail avec le filtre FILTER_VALIDATE_EMAIL :

<?php
$email = trim($_POST['email'] ?? '');

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $errors[] = 'Invalid email address';
}

// Also check domain has MX record for extra validation
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    [$user, $domain] = explode('@', $email);
    if (!checkdnsrr($domain, 'MX')) {
        $errors[] = 'Email domain not found';
    }
}

Validation de la longueur des chaînes

Imposez une longueur minimale et maximale pour les chaînes :

<?php
$username = trim($_POST['username'] ?? '');

$len = mb_strlen($username);

if ($len < 3) {
    $errors[] = 'Username must be at least 3 characters';
}
if ($len > 30) {
    $errors[] = 'Username must be at most 30 characters';
}

Validation par liste blanche

Validez les valeurs par rapport à un ensemble autorisé (liste blanche), plutôt que d'essayer de bloquer les mauvaises valeurs :

<?php
$allowedRoles  = ['admin', 'editor', 'viewer'];
$allowedSorts  = ['name', 'date', 'price'];

$role = $_POST['role'] ?? '';
$sort = $_GET['sort']  ?? 'name';

if (!in_array($role, $allowedRoles, true)) {
    $errors[] = 'Invalid role selected';
}

// Default to 'name' if sort value invalid
if (!in_array($sort, $allowedSorts, true)) {
    $sort = 'name';
}

Validation des URL et des adresses IP

Validez les URL et les adresses IP avec les filtres intégrés :

<?php
$url = $_POST['website'] ?? '';
$ip  = $_POST['ip']      ?? '';

if (!filter_var($url, FILTER_VALIDATE_URL)) {
    $errors[] = 'Invalid URL';
}

if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
    $errors[] = 'Invalid IPv4 address';
}

Validation de motifs avec des expressions régulières

Utilisez preg_match() pour valider un format personnalisé :

<?php
$phone = preg_replace('/[^0-9+]/', '', $_POST['phone'] ?? '');

// Validate format: +1234567890
if (!preg_match('/^\+?[0-9]{7,15}$/', $phone)) {
    $errors[] = 'Invalid phone number';
}

// Validate date format YYYY-MM-DD
$date = $_POST['date'] ?? '';
if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $date)) {
    $errors[] = 'Date must be in YYYY-MM-DD format';
}

Validation des dates

Vérifiez qu'une chaîne représente une date réelle du calendrier :

<?php
function isValidDate(string $date, string $format = 'Y-m-d'): bool {
    $d = DateTime::createFromFormat($format, $date);
    return $d && $d->format($format) === $date;
}

var_dump(isValidDate('2024-02-29'));  // true (2024 is leap year)
var_dump(isValidDate('2023-02-29'));  // false (not a leap year)
var_dump(isValidDate('2024-13-01'));  // false (no month 13)

Validation des fichiers téléversés

Validez les fichiers téléversés selon leur type, leur taille et leur code d'erreur :

<?php
$file = $_FILES['photo'] ?? null;

if ($file) {
    if ($file['error'] !== UPLOAD_ERR_OK) {
        $errors[] = 'Upload failed with error: ' . $file['error'];
    } elseif ($file['size'] > 2 * 1024 * 1024) {
        $errors[] = 'File exceeds 2MB limit';
    } elseif (!in_array(mime_content_type($file['tmp_name']), ['image/jpeg', 'image/png'])) {
        $errors[] = 'Only JPEG and PNG files allowed';
    }
}

Affichage des erreurs de validation

Affichez les erreurs directement à côté des champs du formulaire et conservez les valeurs saisies par l'utilisateur :

<?php
// Preserve entered values:
$name = htmlspecialchars($_POST['name'] ?? '');
?>
<form method="POST">
    <input name="name" value="<?= $name ?>">
    <?php if (isset($errors['name'])): ?>
        <p class="error"><?= htmlspecialchars($errors['name']) ?></p>
    <?php endif; ?>
    <button type="submit">Submit</button>
</form>

Vérification rapide

En quoi consiste une approche de validation par liste blanche ?

Récapitulatif : validation des données saisies

Bonnes pratiques de validation :

  • Vérifier les champs obligatoires après trim()
  • Utiliser filter_var() pour valider les types et les formats
  • Limiter les valeurs autorisées à une liste blanche avec in_array()
  • Utiliser preg_match() pour les motifs personnalisés
  • Valider les fichiers téléversés : code d'erreur, taille et type MIME
  • Conserver les données saisies par l'utilisateur lors de la réaffichage des formulaires contenant des erreurs

Questions Fréquemment Posées

La leçon « Techniques de validation des entrées » est-elle gratuite ?

Oui — le texte complet de « Techniques de validation des entrées » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Techniques de validation des entrées » ?

Vérifier les champs obligatoires, les types et les longueurs avant le traitement. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer PHP Academy ?

Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Techniques de validation des entrées » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?

Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. GET ou POST : quand utiliser chacun
  2. Lire les données de formulaire avec les superglobales
  3. Techniques de validation des entrées
  4. Nettoyer les entrées utilisateur
← Retour à PHP Academy