当前浏览:首页 / WordPress函数 / wp_create_nonce()

wp_create_nonce( string|int $action = -1 )

创建绑定到特定操作、用户、用户会话和时间窗口的加密令牌

nonce 令牌


参数

$action

(string|int) (可选) 将上下文添加到nonce的标量值。

默认值: -1


返回

(string) 令牌(token)


说明

应使用init或任何后续动作钩子调用该函数。在动作挂钩之外调用它可能会导致问题,有关详细信息,请参阅ticket #14024



源码

查看源码 官方文档


更新日志

版本描述
4.0.0会话令牌与nonce创建集成
2.0.3开始引入

使用示例

  • 示例1

    示例
    在这个简单的示例中,我们创建一个nonce,并将其用作链接URL中的GET查询参数之一。当用户单击该链接时,他们将被引导到一个页面,在该页面上将执行某个操作(例如,一篇文章可能会被删除)。在目标页面上,验证nonce以确保请求有效(该用户确实单击了链接,并且确实想要执行此操作)。

    /*
     * Step A: Create an nonce for a link.
     * We pass it as a GET parameter.
     * The target page will perform some action based on the 'do_something' parameter.
     */
    $nonce = wp_create_nonce( 'my-nonce' );
    ?>
    <a href='myplugin.php?do_something=some_action&_wpnonce=<?php echo esc_attr( $nonce ); ?>'><?php esc_html_e( 'Do some action', 'textdomain' ); ?></a>
    
    
    /*
     * Step B: This code would go in the target page.
     * We need to verify the nonce.
     */
    $nonce = $_REQUEST['_wpnonce'];
    if ( ! wp_verify_nonce( $nonce, 'my-nonce' ) ) {
    	// This nonce is not valid.
    	die( __( 'Security check', 'textdomain' ) ); 
    } else {
    	// The nonce was valid.
    	// Do stuff here.
    }
    

    在上面的例子中,我们简单地调用我们的noncemy-nonce。最好为特定于动作的nonce选择一个名称。例如,如果我们要创建一个nonce,它将是删除文章请求的一部分,我们可以将其称为delete_post。然后,为了使其更具体,我们可以附加nonce用于的特定post的ID。例如,ID为5的文章的delete_post-5

    wp_create_nonce( 'delete_post-' . $post_id );
    

    然后我们会像这样验证nonce:

    wp_verify_nonce( $nonce, "delete_post-{$_REQUEST['post_id']}" );
    

    一般来说,最好使动作的名称尽可能具体。