Ce face sanitize_text_field
sanitize_text_field() (din WordPress 2.9.0) se folosește la intrare, înainte să salvezi un text simplu (nume, oraș, telefon). Verifică UTF-8 invalid, transformă un < singur în entitate, elimină toate etichetele HTML, elimină rândurile noi, tab-urile și spațiile în plus și elimină caracterele codificate cu procent (de forma %20).
Datele din $_POST și $_GET sunt „slashed” de WordPress (au backslash în fața ghilimelelor), de aceea le treci întâi prin wp_unslash() (din 3.6.0): sanitize_text_field( wp_unslash( $_POST['nume'] ) ).
Pentru texte pe mai multe rânduri (un mesaj dintr-un textarea) există sanitize_textarea_field() (din 4.7.0), care păstrează rândurile noi. Sanitizarea nu înlocuiește escaparea: la afișare folosești tot esc_html() sau esc_attr().
Parametri
| Parametru | Descriere |
|---|---|
$str |
Textul de curățat. |
Ce returnează
Textul curățat (șir).
Exemple
Exemplul 1: Curățarea unui nume din formular
Spațiile de la margini, rândul nou și eticheta <b> dispar; rămâne numele simplu.
<?php
$intrare = " Ana <b>Popescu</b>\n ";
var_dump( sanitize_text_field( $intrare ) );
Ce afișează pagina
string(11) "Ana Popescu"
Exemplul 2: Salvarea unui formular de rezervare
Câmpul de o linie trece prin sanitize_text_field(), mesajul prin sanitize_textarea_field(), după wp_unslash().
<?php
function dex_salveaza_rezervare() {
check_admin_referer( 'dex_rezervare' );
$nume = sanitize_text_field( wp_unslash( $_POST['nume'] ?? '' ) );
$mesaj = sanitize_textarea_field( wp_unslash( $_POST['mesaj'] ?? '' ) );
wp_insert_post( array(
'post_type' => 'dex_rezervare',
'post_title' => $nume,
'post_content' => $mesaj,
'post_status' => 'private',
) );
wp_safe_redirect( home_url( '/multumim/' ) );
exit;
}
add_action( 'admin_post_nopriv_dex_rezervare', 'dex_salveaza_rezervare' );
add_action( 'admin_post_dex_rezervare', 'dex_salveaza_rezervare' );
Greșeli frecvente
sanitize_text_field()pe untextarea: rândurile noi se pierd și mesajul ajunge pe o singură linie. Foloseștesanitize_textarea_field().- Să uiți
wp_unslash(): în textul salvat apar backslash-uri în fața ghilimelelor (Cafeneaua \"Ana\"). - Să consideri textul sanitizat „sigur” și să îl afișezi fără escapare: escaparea la afișare rămâne obligatorie.
- Să o folosești pentru emailuri, adrese sau numere: există funcții dedicate (
sanitize_email(),sanitize_url(),absint()).
Comenzi înrudite
esc_html: Escapează textul pentru afișare în HTML: transformă < > & și ghilimelele în entități, ca să nu fie interpretate ca cod.wp_kses: Păstrează doar etichetele și atributele HTML permise și elimină restul (scripturi, atribute on*, protocoale nesigure).wp_nonce_field: Adaugă într-un formular un câmp ascuns cu un nonce, un cod care dovedește că cererea pornește chiar de pe site-ul tău.check_admin_referer: Verifică nonce-ul unei cereri din administrare și oprește execuția cu o pagină de eroare dacă e invalid sau a expirat.