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.
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
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.
<?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";
}
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";
}
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.