Cours PHP Fonctions et Formulaire en PDF (Intermédiaire)
PHP : Fonctions et Formulaire. Définition : ensemble de notions sur la déclaration et l'appel de fonctions en PHP (function, syntaxe, paramètres, portée, récursivité, fonctions dynamiques, gestion d'un nombre variable d'arguments) ainsi que les mécanismes de transmission de données via les formulaires HTML vers un script PHP. L'étude de ces éléments est essentielle pour structurer du code réutilisable, contrôler la portée des variables (locale, globale, static) et sécuriser la réception des données de formulaire dans des applications web. Ce document PDF gratuit contient des exemples de code prêts à être téléchargés et testés.
🎯 Ce que vous allez apprendre
- Syntaxe de déclaration des fonctions — comprendre la forme standard d'une fonction
function nom($args){...}, le rôle dureturnet les bonnes pratiques de nommage. Créer des fonctions modulaires pour factoriser le code et faciliter l'évolution des scripts PHP. - Passage des paramètres par valeur et par référence — distinction entre copie de valeur et passage d'adresse mémoire avec le préfixe
&, et conséquences sur l'état des variables après appel. Décider quand utiliser la référence pour modifier un tableau ou une variable depuis la fonction et éviter des effets de bord involontaires. - Gestion d'un nombre variable d'arguments — utilisation de
func_num_args,func_get_argetfunc_get_argspour écrire des fonctions polymorphes. Implémenter des wrappers ou des API internes acceptant des signatures flexibles sans surcharge native. - Portée et durée de vie des variables :
globaletstatic— différencier l'accès aux variables viaglobalet l'usage destaticpour conserver un état entre appels. Éviter les conflits de portée et maintenir des compteurs persistants sans variables globales inutiles. - Récursivité et fonctions dynamiques — principes de la récursivité appliqués (exemple d'inversion de chaîne) et appel de fonctions via le nom stocké dans une variable. Comprendre les compromis mémoire/performance entre récursivité et itération et quand recourir à l'appel dynamique pour dispatching fonctionnel.
- Formulaires HTML et réception des données — construction d'un
formavecmethod="GET"oumethod="POST", transmission des champs, et tests d'existence viaisset()etempty(). Illustrations de la relation entre les attributsaction/methodet les variables PHP reçues ainsi que les vérifications basiques côté serveur. - Validation et filtrage des données — techniques de validation et filtrage d'entrée pour améliorer la sécurité des formulaires : utilisation des superglobales, contrôle de type, nettoyage via filtres natifs et mesures côté serveur pour éviter les entrées malveillantes.
📑 Sommaire du document
- Introduction
- Syntaxe de déclaration
- Utilisation des paramètres
- Variables globales et Variables statiques
- Récursivité
- Fonctions dynamiques
- Nombre variable de paramètres
- Formulaire
Manipulation des variables superglobales en PHP
Les variables superglobales centralisent l'accès aux données partagées entre le client et le serveur. Comprendre leur rôle facilite la lecture et la maintenance des scripts serveur, ainsi que la sécurisation des entrées issues de formulaires. Les plus courantes sont décrites ci‑dessous :
$GLOBALS: tableau associatif contenant toutes les variables globales accessibles par leur nom. Utile pour accès dynamique en dehors du scope d'une fonction, mais à utiliser avec parcimonie pour éviter les couplages forts.$_POST: données envoyées par la méthodePOST(formulaires, payloads). Contient les champs de formulaire et ne s'affiche pas dans l'URL, adapté pour données sensibles.$_GET: données passées via la chaîne de requête (URL). Pratique pour filtres ou navigation mais exposé publiquement, donc attention aux injections.$_REQUEST: fusion de$_GET,$_POSTet$_COOKIEselon la configuration PHP. Utile pour commodité mais déconseillé quand la source doit être explicite pour des raisons de sécurité.$_FILES: informations relatives aux fichiers uploadés via un formulaire (enctype="multipart/form-data"). Contient le nom original, le type, la taille et l'emplacement temporaire ; à valider strictement avant tout traitement côté serveur.
Sécurité et validation des données de formulaire
La validation et le filtrage des données sont indispensables pour garantir l'intégrité des scripts serveur et prévenir les attaques courantes (XSS, injection SQL, etc.). Valider le format, la longueur et le type des champs avant tout traitement, et utiliser les filtres natifs (filter_var, filter_input) pour normaliser les entrées. En complément, appliquer une logique métier côté serveur pour vérifier la cohérence des données reçues.
Sécurisation des données
Nettoyer et échapper systématiquement les valeurs affichées dans le HTML et limiter les balises acceptées selon le contexte. Deux fonctions utiles :
htmlspecialchars()— échapper les caractères spéciaux avant affichage dans une page HTML pour éviter les attaques XSS.strip_tags()— retirer les balises HTML d'une chaîne quand seules les données textuelles sont attendues.
// Exemple de réception et sécurisation minimale
if (isset($_POST['username'])) {
$raw = $_POST['username'];
// Validation simple
if (strlen($raw) > 0 && strlen($raw) <= 50) {
$safe = htmlspecialchars(strip_tags($raw), ENT_QUOTES, 'UTF-8');
// Traitement sécurisé...
}
}
Gestion des tableaux dans les formulaires
Pour récupérer plusieurs valeurs issues d'un même nom de champ (checkboxes, listes multiples), utiliser la syntaxe de tableau dans l'attribut name : par exemple name="options[]". PHP remontera alors un tableau accessible via $_POST['options'] ou $_GET['options'] selon la méthode. Cette approche facilite l'itération, le filtrage et la validation des valeurs reçues.
// Exemple : checkboxes HTML -> récupération PHP
// HTML : <input type="checkbox" name="options[]" value="A">
if (!empty($_POST['options']) && is_array($_POST['options'])) {
foreach ($_POST['options'] as $val) {
$safe = htmlspecialchars($val, ENT_QUOTES, 'UTF-8');
// traitement...
}
}
Gestion des entrées multiples et des tableaux
Quand plusieurs champs portent le même nom, PHP construit automatiquement un tableau contenant toutes les valeurs reçues. Cette règle s'applique aux checkboxes, aux selects multiples et aux groupes de champs numérotés (name="items[0][qty]"). Valider la structure attendue et vérifier chaque élément individuellement pour éviter les injections ou payloads malformés. Lors de la validation, privilégier des filtres stricts et sanitiser chaque entrée avant toute utilisation en base ou affichage.
// Exemple : select multiple
if (isset($_POST['tags']) && is_array($_POST['tags'])) {
$tags = array_map(function($t){ return htmlspecialchars($t, ENT_QUOTES, 'UTF-8'); }, $_POST['tags']);
// $tags contient désormais des valeurs sécurisées
}
Accessibilité et bonnes pratiques pour les formulaires
Concevoir des formulaires accessibles : associer systématiquement un élément <label for="id"> à chaque champ, regrouper les contrôles liés avec <fieldset> et <legend>, et fournir des messages d'erreur exploitant aria-describedby ou aria-live pour les notifications dynamiques. Prévoir des tailles de cible suffisantes, un ordre de tabulation logique et des attributs required/pattern quand approprié. Ces mesures améliorent l'inclusion et la robustesse côté serveur et client.
💡 Pourquoi choisir ce cours ?
Approche pédagogique concrète : chaque notion est accompagnée d'exemples de code commentés (déclaration, référence avec &, static, récursivité, gestion d'arguments via func_get_args) et de conseils pratiques pour l'exploitation en projet web. L'auteur, Thierry VAIRA, propose des démonstrations ciblées qui facilitent la mise en œuvre et la révision des concepts essentiels.
👤 À qui s'adresse ce cours ?
- Public cible : étudiants et développeurs web en formation BTS / DUT ou développeurs PHP débutant-intermédiaire qui cherchent à consolider la gestion des fonctions, la portée des variables et la manipulation des formulaires HTML dans des scripts serveur.
- Prérequis : connaissance de la syntaxe PHP de base (variables, tableaux, boucles, fonctions simples), notions élémentaires de HTML pour construire des formulaires, compréhension des chaînes et tableaux en PHP (
strlen,substr, indexation) et configuration d'un serveur local (WAMP/MAMP/Docker) pour tester les scripts PHP.
❓ Foire Aux Questions (FAQ)
Comment modifier un tableau passé à une fonction pour que la modification persiste à l'extérieur ? Utiliser le passage par référence en préfixant le paramètre par & dans la déclaration (ex : function f(& $tab){...}) permet de transmettre l'adresse mémoire. Ainsi toute modification opérée sur le paramètre impacte la variable d'origine, contrairement au passage par valeur qui travaille sur une copie.
Quand préférer l'itération à la récursivité en PHP ? La récursivité est adaptée aux structures arborescentes et aux algorithmes naturellement récursifs, mais augmente l'usage de la pile d'appels. Pour des parcours linéaires ou des profondeurs élevées, une solution itérative réduit l'empreinte mémoire et améliore souvent les performances.
Transition vers les bases de données MySQL
Maîtriser la construction, la validation et la sécurisation des formulaires est une étape préalable essentielle à la persistance des données. Après avoir validé et sanitizé les entrées (y compris les uploads via $_FILES et les tableaux de formulaires), l'étape suivante consiste à préparer des requêtes paramétrées pour éviter l'injection SQL et assurer la persistance des données en base. Ce document fournit les bases nécessaires avant d'aborder l'insertion sécurisée dans MySQL.