Sanificare l'input intero per update_post_meta

13 nov 2014, 09:04:46
Visualizzazioni: 15.7K
Voti: 8

Quando aggiorno una post meta dove l'input sarà sempre un intero, devo usare (int) o esiste una funzione WordPress specifica (ad esempio sanitize_text_field)?

Per esempio:

if(isset($_POST['category_id'])){
    update_post_meta($post->ID, 'category_id', (int)($_POST['category_id']));
}
0
Tutte le risposte alla domanda 3
0

Per gli interi, KSES non ha una funzione speciale.

Utilizza (int) o intval() o absint()

Vedi anche: Validazione dei Dati - Interi

13 nov 2014 10:05:31
0
// Converte l'input utente in un intero, restituendo 0 se non è numerico
$safe_id = intval( $_POST['category_id'] );
if ( ! $safe_id ) {
  $safe_id = '';
}

// Aggiorna i metadati del post con l'ID categoria validato
update_post_meta( $post->ID, 'category_id', $safe_id );

La funzione intval() converte l'input dell'utente in un numero intero e restituisce zero se l'input non è un valore numerico. Successivamente verifichiamo se il valore risultante è zero. In tal caso, salviamo un valore vuoto nel database. Altrimenti, salviamo il category_id correttamente validato.

4 ago 2016 12:55:14
1

Utilizza un'istruzione condizionale per verificare prima se $_POST['category_id']) è un intero. La funzione PHP è is_int()1

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

Dovresti anche rimuovere gli spazi vuoti dai dati $_POST perché is_int() restituirà false se la stringa contiene spazi vuoti2.

13 nov 2014 09:30:12
Commenti

Il tuo is_int(...) non funzionerà mai perché $_POST contiene sempre stringhe.

Maxime Maxime
30 dic 2019 00:28:25