web-dev-qa-db-fra.com

désinfection de l'entrée entière pour update_post_meta

Lors de la mise à jour d'un méta de poste où l'entrée sera toujours un entier, devrais-je utiliser (int) ou existe-t-il une fonction WordPress pour cela (par exemple, sanitize_text_field)? Par exemple

if(isset($_POST['category_id'])){
    update_post_meta($post->ID, 'category_id', (int)($_POST['category_id']));
}
2
asam

Pour les entiers, KSES n'a pas de fonction spéciale.

Utilisez (int) ou intval() ou absint()

Voir plus: Validation des données - Entiers

3
Marcin

Utilisez une instruction conditionnelle pour vérifier si $_POST['category_id']) est d'abord un entier. La fonction PHP est is_int()1

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

Vous devriez également couper les espaces sur vos données $ _POST car is_int() renverra false si la chaîne a des espaces 2 .

0
iyrin
&safe_id = intval( $_POST['category_id'] );
if ( ! $safe_id ) {
  $safe_id = '';
}

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

La fonction intval () convertit les entrées utilisateur en tant qu'entier. La valeur par défaut est zéro si l'entrée est une valeur non numérique. Nous vérifions ensuite si la valeur a été nulle. Si tel est le cas, nous enregistrerons une valeur vide dans la base de données. Sinon, nous enregistrerons le category_id correctement validé.

0
Annapurna