Wie man ausgewählte Kastenwerte im Postmeta saniert?

Ich habe ein Auswahlfeld im Post-Meta hinzugefügt. Hier ist der Code, und es funktioniert gut. Meine Frage ist, muss ich die Werte vor der Aktualisierung der Post-Meta sterilisieren? Wenn ja, wie soll es gemacht werden?

So füge ich das Meta-Feld hinzu:

ID, 'my_options', true ); ?>  <option value="option1" > <option value="option2" >  

und so aktualisiere ich den Wert:

 if ( isset( $_POST['my_options'] )){ update_post_meta( $post->ID, 'my_options', $_POST['my_options'] ); } 

Solutions Collecting From Web of "Wie man ausgewählte Kastenwerte im Postmeta saniert?"

Wenn ich Eingaben von Benutzerdaten akzeptiere, denke ich, dass eine Datenvalidierung durchgeführt werden muss, wenn möglich, nicht nur eine Bereinigung. Sie könnten beispielsweise eine Zahl, einen bool-Wert oder eine Textzeichenfolge erwarten (selbst wenn die Eingabe eine Auswahlbox ist, kann sie einen Zeichenfolgenwert haben) usw. Sie können für diese Datentypen eine Größenanpassung durchführen. Dann können Sie weiter gehen und die Daten anhand der erwarteten Werte validieren: Ganzzahl, Gleitkommazahl, Wahr / Falsch, E-Mails, URLs und so weiter.

Lassen Sie uns mit Ihrer Auswahlbox gehen. Es gibt zwei Optionen mit den Werten “option1” und “option2”, also sind beide Strings und können mit dem folgenden Text bereinigt werden:

 if ( isset( $_POST['my_options'] )){ $value = sanitize_text_field( $_POST['my_options'] ); update_post_meta( $post->ID, 'my_options', $value ); } 

Aber ein Benutzer kann den Wert der Formularauswahloptionen einfach über das Frontend ändern, so dass er / sie das Formular bearbeiten und andere Werte als “option1” oder “option2” senden kann, die Sie in der database speichern. Da Sie genau wissen, was die erwarteten Werte sind, können Sie eine Datenbereinigung und Datenüberprüfung durchführen. Beispielsweise:

 if ( isset( $_POST['my_options'] )){ $valid_values = array( 'option1', 'option2', ); $value = sanitize_text_field( $_POST['my_options'] ); if( in_array( $value, $valid_values ) ) { update_post_meta( $post->ID, 'my_options', $value ); } } 

Oder Sie können einen benutzerdefinierten Bereinigungs-Callback für die Option “Meine_Optionen” definieren und “sanitize_meta” verwenden:

 if ( isset( $_POST['my_options'] ) ){ $value = sanitize_meta( 'my_options', $_POST['my_options'], 'post' ) update_post_meta( $post->ID, 'my_options', $value ); } 

Und definieren Sie den Santisierungs-Callback:

 add_filter( 'sanitize_post_meta_my_options', 'sanitize_my_options_meta' ); function sanitize_my_options_meta( $value ) { $value = sanitize_text_field( $value ); $valid_values = array( 'option1', 'option2', ); if( ! in_array( $value, $valid_values ) ) { wp_die( 'Invalid value, go back and try again.' ); } return $value; } 

Sie können jede der in WordPress eingebauten Sanierungsfunktionen verwenden (z. B. sanitize_text_field ). Wenn Sie sich jedoch Sorgen darüber machen, dass bestimmte Elemente in die Auswahloptionen eingefügt werden, können Sie mit der function ” sanitize_meta” eine eigene Sanierungsfunktion schreiben.