Je peux voir que wp_nonce_field génère une valeur dans le champ caché.
<input type="hidden" id="message-send" name="message-send" value="cabfd9e42d" />
Mais wp_verify_nonce n'utilise pas cette valeur autant que je sache, mais je me trompe peut-être.
On dirait qu'il utilise un jeton de session pour la vérification.
$expected = substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce'), -12, 10 );
if ( hash_equals( $expected, $nonce ) )
{ return 1; }
Alors à quoi ça sert d'avoir un attribut value dans le champ caché?
En résumé, wp_verify_nonce()
utilise cette valeur car elle attend cette valeur en tant que premier argument.
wp_verify_nonce()
argumentswp_verify_nonce()
reçoit 2 arguments:
$nonce
$action
La valeur dans le champ masqué ('cabfd9e42d'
dans votre exemple) représente le $nonce
.
En fait, wp_verify_nonce()
doit être utilisé comme suit:
// here I assume that the form is submitted using 'post' as method
$verify = wp_verify_nonce($_POST['message-send']);
Ainsi, le premier argument passé à wp_verify_nonce()
est exactement la valeur présente dans le champ masqué.
wp_create_nonce()
En ce qui concerne le second argument, cela dépend de la manière dont vous construisez la valeur nonce.
Par exemple. si vous avez fait:
<?php $nonce = wp_create_nonce( 'custom-action' ); ?>
<input type="hidden" name="message-send" value="<?php echo $nonce ?>" />
Ensuite, vous devez faire:
$verify = wp_verify_nonce( $_POST['message-send'], 'custom-action' );
Le deuxième argument est donc ce qui a été utilisé comme argument pour wp_create_nonce()
.
wp_nonce_field()
Si vous avez créé le nonce en utilisant wp_nonce_field()
like:
wp_nonce_field( 'another_action', 'message-send' );
Ensuite, vous devez vérifier le nonce comme suit:
$verify = wp_verify_nonce( $_POST['message-send'], 'another_action' );
Donc, cette fois, l'action est ce qui est passé comme premier argument à wp_nonce_field()
.
Pour réussir la validation wp_verify_nonce()
, vous devez passer 2 arguments à la fonction, l'un est la valeur dans le champ masqué nonce, l'autre est la action, et dépend de la façon dont la valeur nonce a été construite.