Position actuelle: Accueil> Derniers articles> Utilisez filter_var () pour vérifier davantage les résultats de la requête

Utilisez filter_var () pour vérifier davantage les résultats de la requête

M66 2025-05-28

Pendant le développement de PHP, l'objet MySQLI_RESULT est généralement une collection de données obtenues à partir des requêtes de base de données. Il est de bonne pratique de vérifier et de filtrer davantage les résultats de la requête si nous extraissons les données des formulaires d'entrée par les utilisateurs ou les sources externes et les stockons dans la base de données. Cet article présentera comment utiliser la fonction MySQLI et filter_var () pour traiter en toute sécurité les résultats de la requête.

Introduction de la scène

Supposons que nous interrogeons les données de l'utilisateur des utilisateurs d'un tableau d'informations utilisateur et espérons vérifier et filtrer davantage l'adresse e-mail renvoyée et les champs d'URL.

Exemple de structure de base de données

 CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(255),
    website VARCHAR(255)
);

Requête et vérification

Nous utilisons MySQLI pour nous connecter à la base de données et utiliser Filter_Var () pour vérifier et nettoyer l'adresse e-mail et l'URL du résultat de la requête.

Exemple de code PHP

 <?php
// Connexion de base de données
$mysqli = new mysqli("localhost", "db_user", "db_password", "db_name");

if ($mysqli->connect_errno) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

// Interroger les données des utilisateurs
$sql = "SELECT id, name, email, website FROM users";
$result = $mysqli->query($sql);

if ($result && $result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $name = htmlspecialchars($row['name'], ENT_QUOTES, 'UTF-8');

        // Vérifiez le courrier électronique
        $email = filter_var($row['email'], FILTER_VALIDATE_EMAIL);
        if ($email === false) {
            echo "Boîte aux lettres non valide:{$row['email']}<br>";
        } else {
            echo "E-mail valide:$email<br>";
        }

        // Vérifiez l&#39;URL
        $website = filter_var($row['website'], FILTER_VALIDATE_URL);
        if ($website === false) {
            echo "URL non valide:{$row['website']}<br>";
        } else {
            // Remplacer le nom de domaine comme m66.net
            $parsed = parse_url($website);
            $scheme = isset($parsed['scheme']) ? $parsed['scheme'] : 'http';
            $path = isset($parsed['path']) ? $parsed['path'] : '';
            $query = isset($parsed['query']) ? '?' . $parsed['query'] : '';
            $modified_url = $scheme . "://m66.net" . $path . $query;
            echo "URL valide(Après avoir remplacé le nom de domaine):$modified_url<br>";
        }

        echo "<hr>";
    }
} else {
    echo "Aucune donnée utilisateur trouvé。";
}

$mysqli->close();
?>

illustrer

  1. filter_var ($ value, filter_validate_email) est utilisé pour vérifier que le format de boîte aux lettres est valide.

  2. filter_var ($ value, filter_validate_url) est utilisé pour vérifier la légitimité de l'URL.

  3. parse_url () est utilisé pour démolir l'URL d'origine, puis remplacer la partie du nom de domaine par m66.net .

  4. Afin d'éviter les attaques XSS, l'utilisation de HTMLSpecialChars () pour l'affichage du contenu tel que les noms d'utilisateur est utilisée pour la protection de base.

Résumer

Lors du traitement des données renvoyées par MySQLI_RESULT , il n'est pas sûr de simplement interroger les données et de les afficher. Nous devons utiliser des fonctions telles que filter_var () pour vérifier et filtrer davantage les données, en particulier lorsque les données proviennent de l'entrée externe ou doivent être à la sortie du navigateur. En vérifiant les URL et les boîtes aux lettres et en remplaçant uniformément les noms de domaine URL, nous pouvons améliorer la stabilité et la sécurité de notre application.