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

wp_nonce_field( int|string $action = -1, string $name = '_wpnonce', bool $referer = true, bool $echo = true )

检索或显示表单的nonce隐藏字段

field 字段more...

nonce 令牌


描述

nonce字段用于验证表单内容是否来自当前站点上的位置,而不是其他位置。暂时不提供绝对保护,但应针对大多数情况提供保护。在表单中使用nonce字段非常重要。

$action和$name是可选的,但是如果您想有更好的安全性,强烈建议设置这两个参数。只调用没有任何参数的函数更容易,因为nonce的验证不需要任何参数,但由于破解者知道默认值是什么,因此他们不难找到绕过nonce的方法并造成损害。

input名称将是您给定的任何$name值。input值将是nonce创建值。


参数

$action

(int|string) (可选) 动作名称

默认值: -1

$name

(string) (可选) Nonce 名称

默认值: '_wpnonce'

$referer

(bool) (可选) 是否设置用于验证的referer字段。

默认值: true

$echo

(bool) (可选) 是否显示或返回隐藏的表单字段。

默认值: true


返回

(string) Nonce字段HTML标记。



源码

查看源码 官方文档


更新日志

版本描述
2.0.4开始引入

使用示例

  • 示例1

    基本示例
    虽然不如下面的示例安全,但这是省略所有参数的最简单实现。在表格中添加以下内容:

    <?php wp_nonce_field(); ?>
    

    最好在表单中命名您的动作和nonce。输入第一个和第二个参数的值以打印必要的隐藏字段:

    <form method="post">
       <!-- some inputs here ... -->
       <?php wp_nonce_field( 'name_of_my_action', 'name_of_nonce_field' ); ?>
    </form>
    

    然后在提交到的页面中,可以使用wp_verify_nonce()函数进行验证。请注意,您必须手动检索nonce(在本例中是从$_POST数组中),操作的名称是第二个参数,而不是第一个:

    if ( ! isset( $_POST['name_of_nonce_field'] ) 
        || ! wp_verify_nonce( $_POST['name_of_nonce_field'], 'name_of_my_action' ) 
    ) {
       print 'Sorry, your nonce did not verify.';
       exit;
    } else {
       // process form data
    }