Wp_nonce_fieldが隠しフィールドに値を生成することがわかります。
<input type="hidden" id="message-send" name="message-send" value="cabfd9e42d" />
しかしwp_verify_nonceは私が言うことができる限りその値を使っていません、しかし私は間違っているかもしれません。
検証にセッショントークンを使用しているようです。
$expected = substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce'), -12, 10 );
if ( hash_equals( $expected, $nonce ) )
{ return 1; }
それでは、隠しフィールドにvalue属性を持つことの意味は何ですか?
つまり、wp_verify_nonce()
は その値を最初の引数として期待 _しているためです。
wp_verify_nonce()
引数wp_verify_nonce()
は2つの引数を受け取ります。
$nonce
$action
隠しフィールド(この例では'cabfd9e42d'
)の値は$nonce
を表します。
実際、wp_verify_nonce()
は次のように使わなければなりません:
// here I assume that the form is submitted using 'post' as method
$verify = wp_verify_nonce($_POST['message-send']);
したがって、wp_verify_nonce()
に渡される最初の引数は、隠しフィールドに存在する値とまったく同じです。
wp_create_nonce()
メソッド2番目の引数に関しては、それはあなたがnonce値をどのように構築するかによって異なります。
例えば。もしそうなら:
<?php $nonce = wp_create_nonce( 'custom-action' ); ?>
<input type="hidden" name="message-send" value="<?php echo $nonce ?>" />
それからあなたはする必要があります:
$verify = wp_verify_nonce( $_POST['message-send'], 'custom-action' );
したがって、2番目の引数は wp_create_nonce()
への引数として使用されたものです。
wp_nonce_field()
メソッドwp_nonce_field()
を使用してナンスを作成した場合:
wp_nonce_field( 'another_action', 'message-send' );
それなら、あなたはノンスを確かめる必要があります。
$verify = wp_verify_nonce( $_POST['message-send'], 'another_action' );
そのため、今回のアクションはwp_nonce_field()
の最初の引数として渡されたものです。
wp_verify_nonce()
の検証に合格するには、関数に2つの引数を渡す必要があります。1つはnonce隠しフィールドの値、もう1つはaction、そしてnonce値がどのように構築されたかによって異なります。