Le processus de sécurité mis en place par les nonces dans un formulaire WordPress se déroule en deux temps : la génération du nonce lorsque le formulaire est affiché puis la vérification de la validité du nonce lorsque le formulaire est traité.
Lorsqu'une balise <form> est générée, un nonce est également généré à l'aide de la fonction wp_nonce_field(). Cette fonction génère le nonce puis l'ajoute au formulaire dans un champ caché.
La fonction demande quelques paramètres, tous optionnels.
Prenons le cas d'un formulaire affiché dans le tableau de bord. Son affichage sera codé dans la fonction de rappel associée à l'option de menu qui affiche le formulaire.
Le nonce sera généré ainsi :
$nonce = wp_nonce_field( 'une_action_donne_sur_id_3', 'nomduchampcache', true, false);
?>
<form method='post' action='...'>
<?php echo $nonce; ?>
...
</form>
<?php
ou
?>
<form method='post' action='...'>
<?php wp_nonce_field( 'une_action_donnee_sur_id_3', 'nomduchampcache', true, true); ?>
...
</form>
<?php
Lorsque la fonction de rappel qui génère ce formulaire sera exécutée, le code suivant sera généré :
<form method='post' action='...'>
<input type="hidden" id="nomduchampcache" name="nomduchampcache" value="b902a6edc8" />
<input type="hidden" name="_wp_http_referer" value="..." />
...
</form>
Lors du traitement du formulaire, une vérification de la validité du nonce est effectuée à l'aide de wp_verify_nonce().
// traitement du formulaire
if ( isset( $_POST['soumettre'] ) ) { // si la page a reçu des données du formulaire
if ( isset($_POST['nomduchampcache'] ) && wp_verify_nonce( $_POST['nomduchampcache'], 'une_action_donnee_sur_id_3' ) ) {
... // effectuer l'action prévue par le formulaire
} else {
... //traitement à effectuer si le nonce n'est pas valide
}
}
// renvoie le contrôle à la page qui affiche la liste des items dans le tableau de bord
$url = admin_url( "admin.php?page=monprefixe_gestion" );
wp_redirect( $url );
▼Publicité