it-swarm.com.de

Warum muss ich prüfen, ob wp_nonce_field () vorhanden ist, bevor ich es verwende?

ich verstehe nicht wirklich, warum die Prüfung, ob die Nonce-Funktion vorhanden ist, bevor es ausgeführt wird ...

if ( function_exists('wp_nonce_field') ) 
     wp_nonce_field('gmp_nonce_check');

ich verstehe es für die Abwärtskompatibilität ...

Beachten Sie auch, wie Sie überprüfen, ob die Funktion wp_nonce_field vorhanden ist, bevor Sie versuchen, sie aus Gründen der Abwärtskompatibilität aufzurufen

aber es wird trotzdem nicht kaputt gehen, wenn ich es auf dem Post zurück überprüfe

if ( isset($_POST['submit']) ) {
     check_admin_referer('gmp_nonce_check');
1
Jiew Meng

Die Antwort ist, dass Sie nicht überprüfen sollten, ob wp_nonce_field () existiert, bevor Sie es verwenden!

Die Empfehlung, die Prüfung durchzuführen, setzt voraus, dass Sie mit Versionen von WordPress kompatibel sein möchten, bevor die Funktion existierte. Wenn Rarst Recht hat, dass es in 2.0.4 eingeführt wurde, sollten Sie frühere Versionen NICHT unterstützen, da sie alle absolut unsicher sind und jeder, der sie verwendet, sofort ein Upgrade durchführen muss.

Normalerweise sollten Sie nicht in WP nach Funktionen suchen müssen, im Gegensatz zu Funktionen von Plugins, die möglicherweise nicht aktiviert sind.

Wo haben Sie diesen Kommentar gesehen, den Sie zitiert haben? Es sollte entfernt werden.

5
jerclarke

Wenn ich Ihre Frage richtig verstehe, fragen Sie, warum nicht überprüft werden muss, ob check_admin_referer () ebenfalls definiert ist?

Aus meiner Sicht ist diese Funktion viel älter (seit WP 1.2.0) als wp_nonce_field () (seit WP 2.0.4). Daher würde ich davon ausgehen, dass Sie mit sehr viel geringerer Wahrscheinlichkeit auf eine Version stoßen, die so alt ist wie check_admin_referer ().

1
Rarst

Sie prüfen, ob eine Funktion vorhanden ist, um einen schwerwiegenden Fehler und einen anschließenden Anwendungsstopp zu vermeiden, wenn Ihr Code in einer Version von WordPress ausgeführt wird, die die Funktion, die Sie verwenden möchten, nicht enthält.

Stellt dies die Abwärtskompatibilität sicher? Absolut. Noch wichtiger ist jedoch, dass diese Überprüfung verhindert, dass Ihr Code die gesamte Anwendung zum Absturz bringt, wenn Ihr Code ausgeführt wird:

Die Fehlerbehandlung sollte in jedem System „sinnvoll“ sein. Dies bedeutet, dass die Anwendung wissen sollte, wie sie ihre eigenen Fehler erkennt und auf angemessene Weise und mit minimaler Unterbrechung für Endbenutzer behandelt. Lesen Sie mehr unter http://www.devshed.com/c/a/PHP/PHP-Application-Development-Part-Two/2/#wIxuV7yhLhBTU1UZ.99

In Ihrem Code könnten Sie also Folgendes tun:

if ( function_exists('wp_nonce_field') ) {
 wp_nonce_field('gmp_nonce_check');
} else {
 //do nothing
 exit() ;
}
0
Daryl