描述
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 | 开始引入 |
使用示例
基本示例
虽然不如下面的示例安全,但这是省略所有参数的最简单实现。在表格中添加以下内容:<?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 }