Maison >développement back-end >tutoriel php >Désinfecter et valider les données avec les filtres PHP
La validation efficace des données est cruciale pour les formulaires Web sécurisés et robustes. Les données non valides peuvent créer des vulnérabilités de sécurité et des dysfonctionnements du site Web. Ce tutoriel montre comment la fonction de PHP filter_var
désinfecte et valide efficacement les entrées utilisateur, empêchant ces problèmes.
De nombreux développeurs trouvent la validation des données fastidieuse, impliquant souvent:
Heureusement, PHP propose une solution rationalisée.
filter_var
PHP filter_var
simplifie le processus. Sa syntaxe est:
<code class="language-php">filter_var( mixed $value, int $filter = FILTER_DEFAULT, array|int $options = 0 ): mixed</code>
$value
: les données à filtrer. $filter
: L'ID du filtre (par exemple, FILTER_SANITIZE_EMAIL
, FILTER_VALIDATE_INT
). $options
: Paramètres facultatifs pour la personnalisation du filtre. Renvoie FALSE
en cas de défaillance du filtre. filter_var
Saisition par e-mail:
Le filtre FILTER_SANITIZE_EMAIL
supprime les caractères illégaux des adresses e-mail. Par exemple:
<code class="language-php">$email = "test\"';DROP TABLE users;--@example.com"; $sanitizedEmail = filter_var($email, FILTER_SANITIZE_EMAIL); echo $sanitizedEmail; // Outputs: test@example.com (malicious script removed)</code>
Saisition URL:
De même, FILTER_SANITIZE_URL
nettoie les URL des caractères nuisibles:
<code class="language-php">$url = "http://example.com/?param="; $sanitizedUrl = filter_var($url, FILTER_SANITIZE_URL); echo $sanitizedUrl; // Outputs: http://example.com/?param= (script removed)</code>
filter_var
Validation de l'adresse IP:
<code class="language-php">$ip = "127.0.0.1"; if (filter_var($ip, FILTER_VALIDATE_IP)) { // Valid IP address } else { // Invalid IP address }</code>
Validation entière:
<code class="language-php">$foo = "123"; if (filter_var($foo, FILTER_VALIDATE_INT)) { // Valid integer } else { // Invalid integer }</code>
Créons un formulaire de soumission de messagerie simple pour illustrer la désinfection et la validation des données. Le formulaire s'accumule: nom, e-mail, page d'accueil et message. Seules les données valides déclenchent la soumission des e-mails.
Étape 1: Création du formulaire (form.html):
<code class="language-html"><form method="post" action="form-email.php"> Name: <input type="text" name="name"><br><br> Email Address: <input type="email" name="email"><br><br> Home Page: <input type="url" name="homepage"><br><br> Message: <textarea name="message"></textarea><br><br> <input type="submit" name="Submit" value="Send"> </form></code>
Étape 2: Gestion de la soumission du formulaire (form-email.php):
<code class="language-php"><?php $errors = ""; if (isset($_POST['Submit'])) { // ... (Validation and sanitization logic as shown in original example) ... if (empty($errors)) { // Send email using mail() function with sanitized data echo "Thank you for your message!"; } else { echo "Errors: <br>" . $errors; } } ?></code>
(Remarque: La logique complète de validation et de désinfection de l'exemple d'origine doit être insérée dans le bloc if (isset($_POST['Submit']))
dans form-email.php
.)
Ce tutoriel fournit une base pour l'utilisation des capacités de filtrage de données de PHP. Bien qu'il ne soit pas exhaustif, il présente l'efficacité de filter_var
pour une gestion des données sécurisée et fiable. Reportez-vous à la section de filtrage des données du manuel PHP pour des techniques plus avancées. L'image a été générée à l'aide de Dall-E 2.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!