La validation protège les règles
$validator = new Validator();
$valid = $validator->validate($request->input(), [
'title' => ['required', 'string', 'min:2', 'max:180'],
'author' => ['required', 'string', 'min:2', 'max:120'],
]);
if (!$valid) {
return $this->view('books/create.php', [
'errors' => $validator->errors(),
'old' => $request->input(),
], 422);
}required vérifie la présence, string le type, min et max la longueur. PHPAML fournit aussi email, url, uuid, integer, numeric, boolean, date, in, same, confirmed, regex, unique et exists.
L’échappement protège le document
<!-- Mauvais : le contenu peut devenir du HTML -->
<h1><?= $book->title ?></h1>
<!-- Bon : le contenu reste du texte -->
<h1><?= $view->escape($book->title) ?></h1>Un titre comme <script>…</script> doit être affiché littéralement, jamais exécuté. Échappez au moment de produire la sortie HTML, car le bon encodage dépend du contexte de sortie.
Ne corrigez pas silencieusement une entrée invalide
trim() peut enlever des espaces involontaires, mais transformer une valeur incorrecte sans avertir risque de changer le sens choisi par l’utilisateur. Conservez les anciennes valeurs sûres, affichez les erreurs près des champs et renvoyez 422.
Vérifiez votre compréhension : La validation remplace-t-elle escape() ?
Non. Un titre contenant certains caractères HTML peut être valide comme donnée, mais doit toujours être échappé lors de son affichage.