wp_verify_nonce()


WordPressの関数wp_verify_nonce()は、フォームやURLで使用されるnonceの有効性を確認するための機能です。

構文

wp_verify_nonce( string $nonce, string|int $action = -1 );

引数の説明:

  • $nonce (string) — 検証するnonce文字列。
  • $action (string|int) — オプション。nonceの関連付けに使用されるアクション名またはID。デフォルトは-1

戻り値:

  • nonceが有効であれば1、ユーザーが違えば2、無効であればfalse

例1: nonceの検証

nonceを検証し、成功時にメッセージを出力します。

<?php
if ( wp_verify_nonce( $_REQUEST['_wpnonce'], 'my_action' ) ) {
    echo 'Nonce is valid.';
} else {
    echo 'Nonce is invalid.';
}
?>

例2: フォーム送信時のnonce検証

フォームのnonceを検証し、適切な処理を行います。

<?php
if ( isset( $_POST['submit'] ) && wp_verify_nonce( $_POST['_wpnonce'], 'form_action' ) ) {
    echo 'Form submitted successfully.';
}
?>

例3: nonce生成と検証

nonceを生成し、それをURL内で使用して検証します。

<?php
$url = add_query_arg( '_wpnonce', wp_create_nonce( 'my_action' ), home_url() );
if ( wp_verify_nonce( $_GET['_wpnonce'], 'my_action' ) ) {
    echo 'Nonce verified from URL.';
}
?>

例4: 非同期リクエストのnonce検証

Ajaxリクエストで送信されたnonceを検証します。

<?php
add_action( 'wp_ajax_my_action', function() {
    if ( ! wp_verify_nonce( $_POST['_wpnonce'], 'ajax_action' ) ) {
        wp_send_json_error( 'Invalid nonce' );
    }
    wp_send_json_success( 'Nonce verified' );
} );
?>

例5: nonceを使用したCSRF保護

フォームにnonceを追加して、CSRF攻撃を防ぎます。

<?php
echo '<form method="post" action="process.php">';
wp_nonce_field( 'form_action' );
echo '<input type="submit" name="submit" value="Submit">';
echo '</form>';
?>

注意事項:

  • nonceは時間制限があります(デフォルトで24時間)。
  • nonceは完全なセキュリティを保証するものではありません。

関連機能: