madaritech/wp-oop-nonces

以面向对象的方式提供WordPress Nonces功能(wp_nonce_*())的类。

v1.0.2 2017-11-23 04:29 UTC

This package is not auto-updated.

Last update: 2024-09-29 04:31:27 UTC


README

提供WordPress Nonces功能(wp_nonce_*())的包,以面向对象的方式。

要求

  • PHP 5.6+
  • Composer
  • WordPress 4.8.3+

安装

使用 Composer 安装

$ composer require madaritech/wp-oop-nonces

运行测试

要运行测试,执行以下命令

$ cd vendor/madaritech/wp-oop-nonces
$ composer install
$ vendor/bin/phpunit

用法

代码参考WordPress工作流中的nonce创建和验证。更多信息请参见 Codex

nonce生成

在WordPress中,使用wp_create_nonce()函数通过指定表示操作的字符串来实现nonce的生成。

类似地,使用Nonce_Generator类和适当的action来继续nonce生成

$generator = new Nonce_Generator( 'action_parameter' );

然后,使用generate_nonce()方法生成nonce

$nonce = $generator->generate_nonce();

nonce URL生成

要将nonce添加到URL,WordPress使用wp_nonce_url()指定裸URL和表示操作的字符串。可选地可以指定name参数的字符串,否则默认为'_wpnonce'

类似地,使用Nonce_Url_Generator类和适当的action值以及可选的name参数(否则默认为'_wp_nonce')来生成带有nonce的URL。

$url_generator = new Nonce_Url_Generator( 'action_parameter' );

因此,使用generate_nonce_url()方法和适当的url生成带有nonce的URL。

$url = $url_generator->generate_nonce_url( 'http://www.madaritech.com' );

同一类还可以直接生成nonce

$nonce = $url_generator->generate_nonce();

nonce字段生成

要将nonce添加到表单,WordPress使用wp_nonce_field()指定表示操作的字符串。默认情况下,wp_nonce_field()生成两个隐藏字段,一个字段的值是nonce,另一个字段的值是当前URL(引用者),然后输出结果。

类似地,使用Nonce_Field_Generator类和适当的action值来生成带有nonce的表单字段

$field_generator = new Nonce_Field_Generator( 'action_parameter' );

构造函数接受其他参数,这些参数会影响nonce字段生成结果(generate_nonce_field()方法)

  1. name:nonce字段的名称。默认为'_wpnonce'
  2. referer:布尔值,表示是否添加一个包含引用URL值的隐藏字段。将其设置为false以不添加字段。默认为true
  3. echo:布尔值,表示是否打印字段。将其设置为false以不打印字段。默认为true

因此,使用generate_nonce_field()方法生成带有nonce的字段。

$field_generated = $field_generator->generate_nonce_field()

同一类还可以直接生成nonce

$nonce = $field_generator->generate_nonce();

nonce验证

要验证nonce,WordPress使用wp_verify_nonce()指定nonce和表示操作的字符串。

类似地,通过Nonce_Validator类提供验证功能;构造函数接受一个action参数(用于生成我们想要验证的nonce的相同参数)来验证nonce

$validator = new Nonce_Validator( 'action_parameter' );

nonce直接验证

要验证nonce,使用validate_nonce()方法,将nonce作为参数验证

$is_valid = $validator->validate_nonce($nonce);

如果验证成功,则方法返回true;否则返回false

nonce请求验证

要验证通过请求(GET或POST)在页面上接收到的nonce,使用validate_request()方法

$is_valid = $validator->validate_request();

如果验证成功,则方法返回true;否则返回false