Nonce を作成する
Nonce は、URL リクエストまたはフォームの Hidden 要素に配置でき、Ajax リクエスト中に Javascript を通じて使用できます。 。 Nonce のライフサイクルは現在のセッション内のみであり、ログアウトして再度ログインすると、以前の Nonce も無効になります。URL に nonce を追加
wp_nonce_url() メソッドを通じて URL に nonce を追加できます:wp_nonce_url( $actionurl, $action, $name ); // 例如: $complete_url = wp_nonce_url( $bare_url, 'trash-post_'.$post->ID );$bare_url (必須 Select) はnonce が追加される URL、$action は nonce に定義されたアクション名 (オプション)、デフォルトは -1 です。 デフォルトでは、リンク内に生成される nonce の名前は _wpnonce です。競合の可能性を避けるために、WordPress 3.6 バージョン以降では、wp_nonce_url にオプションの $name パラメーターが追加され、ユーザーが自分で指定できるようになりました。リンク内のナンスの名前。例:
$complete_url = wp_nonce_url( $bare_url, 'trash-post_'.$post->ID, 'my_nonce' );
フォームに nonce を追加
wp_nonce_field() メソッドを使用してフォームに非表示要素を追加できます:PHP wp_nonce_field( $action, $name, $referer, $echo ) //例如 : wp_nonce_field( 'delete-comment_'.$comment_id ); wp_nonce_field( $action, $name, $referer, $echo ) //例如 : wp_nonce_field( 'delete-comment_'.$comment_id );Call上記のメソッドは、次のようなコードを生成します。
<input type="hidden" id="_wpnonce" name="_wpnonce" value="796c7766b1" /> <input type="hidden" name="_wp_http_referer" value="/wp-admin/edit-comments.php" />
Generate a semicolon nonce
独立した nonce を生成したいだけの場合は、 wp_create_nonce() を渡すことができます。メソッド:wp_create_nonce( $action ); // 例如: $nonce = wp_create_nonce( 'my-action_'.$post->ID );同様に、$action はオプションのパラメータで、デフォルトは -1 です。上記のメソッドは、「295a686963」のような結果を返します。
ノンスの有効性を確認する
フォーム内のノンスを確認する
管理者管理インターフェイスでは、次のことができます。 check_admin_referer メソッドを使用して、URL の nonce の有効性を検証します:check_admin_referer( $action, $query_arg );次は、check_admin_referer を使用してプラグインの nonce を検証する方法を示す例です:
<form method="post"> <!-- some inputs here --> <?php wp_nonce_field( 'name_of_my_action', 'name_of_nonce_field' ); ?> </form>Verificationメソッド:
check_admin_referer( 'name_of_my_action', 'name_of_nonce_field' );
Ajax での nonce の検証
Ajax リクエストの nonce の有効性を確認したい場合は、check_ajax_referer() メソッドを使用できます。 ##check_ajax_referer( $action, $query_arg, $die )
$die は、$nonce が無効な場合にスクリプトの実行を終了するかどうかを指定します。 (デフォルトは True)
check_ajax_referer を使用する簡単な例:
<?php //Set Your Nonce $ajax_nonce = wp_create_nonce( "my-special-string" ); ?> <script type="text/javascript"> jQuery(document).ready(function($){ var data = { action: 'my_action', security: '<?php echo $ajax_nonce; ?>', my_string: 'Hello World!' }; $.post(ajaxurl, data, function(response) { alert("Response: " + response); }); }); </script>
次のコードを使用して逆方向に検証します:
add_action( 'wp_ajax_my_action', 'my_action_function' ); function my_action_function() { check_ajax_referer( 'my-special-string', 'security' ); echo sanitize_text_field( $_POST['my_string'] ); wp_die(); }独自に生成された nonce を検証します
えええええ