Sanitize Textarea statt Eingabe

Ich möchte der Benutzerregistrierung ein neues Feld hinzufügen. Ich benutze dieses Tutorial von Paul Underwood .

Das Tutorial funktioniert, aber ich möchte den Eingabetext in ein Textfeld umwandeln, von dem ich weiß, wie es funktioniert. Das Problem besteht darin, dass WordPress diese Informationen korrekt speichert.

Ich merkte, dass es wegen sanitize_text_field( $_POST['facebook_profile'] )

Ich versuche einen Weg zu finden, dasselbe für textarea anstelle von Textfeld zu erreichen, aber ich finde nichts (das verstehe ich. Ich bin neu als PHP-Entwickler). Wie kann ich es so einrichten, dass die Textarea Informationen gespeichert werden?

Hier ist der genaue Code, den ich verwende:

 add_action( 'show_user_profile', 'add_extra_social_links' ); add_action( 'edit_user_profile', 'add_extra_social_links' ); function add_extra_social_links( $user ) { ?> 

Additional Information

<input type="text" name="facebook_profile" value="ID )); ?>" class="regular-text" />
Please enter your Twitter username.
<?php } get_the_author_meta( $field, $userID ); update_user_meta( $user_id, $meta_key, $meta_value, $prev_value ); add_action( 'personal_options_update', 'save_extra_social_links' ); add_action( 'edit_user_profile_update', 'save_extra_social_links' ); function save_extra_social_links( $user_id ) { update_user_meta( $user_id,'facebook_profile', sanitize_text_field( $_POST['facebook_profile'] ) ); }

Solutions Collecting From Web of "Sanitize Textarea statt Eingabe"

wp_kses_post, wenn Sie bestimmten HTML- Code in Ihrem Textarea / Wp-Editor zulassen wollen (am sichersten, wie @Bordoni sagt).
esc_textarea ist was du suchst.

Seit WordPress 4.7 gibt es sanitize_textarea_field() .

Was genau das ist, was du willst, aus dem Codex.

Sanitisiert eine mehrzeilige Zeichenfolge aus Benutzereingaben oder aus der database.

Es gibt ein paar Lösungen für Ihr Problem, einige von ihnen geben Ihnen mehr Flexibilität, andere werden das Feld sicherer machen.

Ich verwende am wp_kses_post , weil es nur den HTML- wp_kses_post zulässt, den Sie für einen Post akzeptiert hätten, aber wenn Sie alle HTML-Tags entfernen möchten, würden Sie nach einem wp_kses( $string_unsafe, array() ) .

Sie können auch eine oben erwähnte bereinigte Eingabemethode verwenden, die Sie jedoch zeilenweise verwenden, um Ihnen die gewünschte Lösung zu bieten.

 // When dealing with user input always cast the input as you expect it to be $lines = explode( "\n", (string) $_POST['facebook_profile'] ); // Apply the method $lines = array_map( 'sanitize_text_field', (array) $lines ); update_user_meta( $user_id,'facebook_profile', implode( "\n", $lines ); 

Wie weiter unten gesagt wurde – Die obige Antwort ist vielleicht nicht die beste Option, aber es ist eine Lösung, die Sie in Betracht ziehen können.

PHP verfügt über eingebaute functionen zur Desinfektion mit filter_var (). Sie rufen einfach die function auf, geben die Variable, die Ihre Daten enthält, an und geben Sie an, welcher Filter verwendet werden soll und welche optionalen Flags verwendet werden sollen:

 $myTextArea = "This is the data from my text area"; $mySanitizedText = filter_var($myTextArea, FILTER_SANITIZE_STRING);