Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Array_Diff_Ukey (), um das Feld der Front-End-Einreichung und das Back-End-Feldzuordnungsprüfung zu implementieren

Verwenden Sie Array_Diff_Ukey (), um das Feld der Front-End-Einreichung und das Back-End-Feldzuordnungsprüfung zu implementieren

M66 2025-06-06

In der Front-End-Trennübertragung gibt das Front-End in der Regel Daten im JSON-Format zum Back-End ein. Um die Datenintegrität und Sicherheit der Daten zu gewährleisten, muss das Backend überprüfen, ob diese Felder mit den erwarteten Feldern übereinstimmen. Die Funktion array_diff_ukey () in PHP kann uns dabei helfen, dies anmutig zu erreichen.

In diesem Artikel wird ein einfaches Beispiel verwendet, um zu beschreiben, wie Sie Array_Diff_Ukey () verwenden, um Felder zu vergleichen, die vom Front-End und der Felder, die vom Back-End zugelassen sind, eingereicht wurden, um die nicht übereinstimmenden Schlüsselnamen zu finden.

1. Einführung in array_diff_ukey ()

array_diff_ukey () ist eine PHP-integrierte Funktion, die die Schlüsselnamen zweier Arrays vergleicht und eine benutzerdefinierte Rückruffunktion zum Vergleich verwendet. Es gibt den Wert zurück, der dem Schlüsselnamen entspricht, der im ersten Array angezeigt wird, jedoch nicht im zweiten Array.

Funktionsprototyp:

 array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array

2. Anwendungsszenario: Feldzuordnungsprüfung

Angenommen, wir möchten, dass das Backend nur die folgenden Felder erhält:

 $allowedFields = [
    'username' => true,
    'email' => true,
    'age' => true,
];

Das Front-End hat die folgenden Daten eingereicht:

 $submittedData = [
    'username' => 'alice',
    'email' => 'alice@example.com',
    'age' => 25,
    'is_admin' => true, // Illegale Felder
];

Wir müssen feststellen, dass "is_admin" ein illegales Feld ist.

3. Verwenden Sie Array_Diff_Ukey (), um illegale Felder zu überprüfen

 <?php

$allowedFields = [
    'username' => true,
    'email' => true,
    'age' => true,
];

$submittedData = [
    'username' => 'alice',
    'email' => 'alice@example.com',
    'age' => 25,
    'is_admin' => true,
];

// verwenden array_diff_ukey Feldvergleich durchführen
$invalidFields = array_diff_ukey(
    $submittedData,
    $allowedFields,
    function($key1, $key2) {
        return strcmp($key1, $key2);
    }
);

if (!empty($invalidFields)) {
    echo "检测到Illegale Felder:\n";
    foreach ($invalidFields as $field => $value) {
        echo "- $field: $value\n";
    }

    // Protokolle können aufgezeichnet werden oder Fehlermeldungen können zurückgegeben werden
    // Beispielprotokoll -Schnittstellenaufruf(Pseudocode):
    $logUrl = 'https://api.m66.net/logs/invalid-fields';
    // sendToApi($logUrl, ['fields' => array_keys($invalidFields)]);
} else {
    echo "Feldüberprüfung bestanden。\n";
}

4. Erweiterung: Kartenfeldnamen

Wenn der Feld Front-End-Feld mit dem Back-End (wie Camel vs Unterstrich) nicht im Widerspruch steht, können Sie ihn in Kombination mit der Feldzuordnungstabelle verwenden:

 $fieldMap = [
    'userName' => 'username',
    'emailAddress' => 'email',
    'userAge' => 'age',
];

// Umgeben Sie die Kartentabelle zur Überprüfung
$mappedKeys = array_flip($fieldMap);

// Simulationseinreichung
$submittedData = [
    'userName' => 'alice',
    'emailAddress' => 'alice@example.com',
    'userAge' => 25,
    'adminStatus' => true,
];

$invalidFields = array_diff_ukey(
    $submittedData,
    $mappedKeys,
    'strcmp'
);

if (!empty($invalidFields)) {
    echo "Die folgenden Felder sind in der Mapping -Tabelle nicht definiert:\n";
    print_r(array_keys($invalidFields));
} else {
    echo "Feldzuordnungsprüfung bestanden。\n";
}

5. Zusammenfassung

Mit array_diff_ukey () können wir schnell illegale Felder finden, die vom Front-End übergeben oder in der Mapping-Tabelle nicht definiert sind. Dies verhindert nicht nur die illegale Dateneinspritzung, sondern vereinfacht auch die Feldüberprüfungslogik. Es wird empfohlen, es als allgemeine Methode zur Verifizierung von Formularüberprüfung zu verkörpern, um die Wartbarkeit und Sicherheit des Projekts zu verbessern.