esc_attr în WordPress

Securitate WordPress 2.8

Escapează o valoare pentru un atribut HTML (value, title, alt, data-*), ca ghilimelele să nu închidă atributul.

Sintaxă
esc_attr( string $text ): string

Ce face esc_attr

esc_attr() (din WordPress 2.8.0) codifică <, >, &, ghilimelele duble și apostroful, fără să codifice a doua oară entitățile existente. Se folosește pentru orice valoare pusă între ghilimelele unui atribut: value, title, alt, placeholder, data-*, class.

Fără escapare, o valoare care conține " închide atributul, iar restul textului poate adăuga atribute noi, de exemplu onmouseover. Cu esc_attr(), ghilimelele devin &quot; și rămân în interiorul valorii.

Ca la esc_html(), există esc_attr__() și esc_attr_e() pentru texte traductibile. Pentru atributele care conțin adrese (href, src, action) folosește esc_url().

Parametri

Parametru Descriere
$text Valoarea de escapat.

Ce returnează

Valoarea escapată (șir).

Exemple

Exemplul 1: Valoarea unui câmp de formular

Numele salvat conține ghilimele; esc_attr() le transformă în &quot;, deci atributul value rămâne întreg.

<?php
$firma = 'Cafeneaua "La Ana"';
?>
<input type="text" name="dex_firma" value="<?php echo esc_attr( $firma ); ?>">

Ce afișează pagina

<input type="text" name="dex_firma" value="Cafeneaua &quot;La Ana&quot;">

Exemplul 2: Atribute alt și data-* pentru o imagine

Și textul alternativ, și atributul data-oras primesc esc_attr(); adresa imaginii primește esc_url().

<?php
$oras = "Iași & Cluj";
$alt  = "Harta cafenelelor din Iași";
printf(
    '<img src="%s" alt="%s" data-oras="%s">',
    esc_url( 'https://exemplu.ro/img/harta.png' ),
    esc_attr( $alt ),
    esc_attr( $oras )
);

Ce afișează pagina

<img src="https://exemplu.ro/img/harta.png" alt="Harta cafenelelor din Iași" data-oras="Iași &amp; Cluj">

Greșeli frecvente

  • Atribute fără ghilimele (value=<?php echo esc_attr( $x ); ?>): un spațiu în valoare începe un atribut nou. Pune mereu valoarea între ghilimele.
  • esc_attr() pentru href sau src: nu blochează adrese javascript:. Pentru adrese folosește esc_url().
  • Să escapezi de două ori cu funcții diferite (esc_attr( esc_html( $x ) )): nu e nevoie, o singură funcție potrivită contextului ajunge.

Comenzi înrudite

  • esc_html: Escapează textul pentru afișare în HTML: transformă < > & și ghilimelele în entități, ca să nu fie interpretate ca cod.
  • esc_url: Curăță o adresă pentru afișare în href sau src: respinge protocoalele nepermise și codifică & ca &#038;.
  • 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.