Sanitizarea intrărilor de tip întreg pentru update_post_meta

13 nov. 2014, 09:04:46
Vizualizări: 15.7K
Voturi: 8

Când actualizezi un post meta unde intrarea va fi întotdeauna un număr întreg, ar trebui să folosesc (int) sau există o funcție WordPress pentru asta (de exemplu sanitize_text_field)?

De exemplu:

if(isset($_POST['category_id'])){
    update_post_meta($post->ID, 'category_id', (int)($_POST['category_id']));
}
0
Toate răspunsurile la întrebare 3
0

Pentru numerele întregi, KSES nu are nicio funcție specială.

Folosește (int) sau intval() sau absint()

Vezi mai mult: Validarea Datelor - Numere Întregi

13 nov. 2014 10:05:31
0
&safe_id = intval( $_POST['category_id'] );
if ( ! $safe_id ) {
  $safe_id = '';
}

update_post_meta( $post->ID, 'category_id', $safe_id );

Funcția intval() convertește input-ul utilizatorului într-un număr întreg și returnează zero dacă valoarea introdusă nu este numerică. Apoi verificăm dacă valoarea rezultată este zero. Dacă este zero, vom salva o valoare goală în baza de date. În caz contrar, vom salva category_id-ul validat corect.

4 aug. 2016 12:55:14
1

Folosește o instrucțiune condițională pentru a verifica mai întâi dacă $_POST['category_id']) este un întreg. Funcția PHP este is_int()1

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

De asemenea, ar trebui să elimini spațiile albe din datele $_POST pentru că is_int() va returna fals dacă șirul conține spații albe2.

13 nov. 2014 09:30:12
Comentarii

Funcția ta is_int(...) nu va funcționa niciodată deoarece $_POST conține întotdeauna șiruri de caractere.

Maxime Maxime
30 dec. 2019 00:28:25