madaritech / wp-oop-nonces
以面向对象的方式提供WordPress Nonces功能(wp_nonce_*())的类。
Requires
- php: >=5.6
Requires (Dev)
- phpunit/phpunit: 5.7.*
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()方法)
- name:nonce字段的名称。默认为'_wpnonce'。
- referer:布尔值,表示是否添加一个包含引用URL值的隐藏字段。将其设置为false以不添加字段。默认为true。
- 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。