mtizziani / wpnonces
该包最新版本(0.1.1)没有提供许可证信息。
0.1.1
2018-02-05 16:39 UTC
Requires
- php: >=7.2
Requires (Dev)
- 10up/wp_mock: 0.3.0
- phpunit/phpunit: ^6.5
This package is not auto-updated.
Last update: 2024-09-20 23:59:05 UTC
README
此项目创建了一个 WP-Package,用于在面向对象的作用域中使用 wp_nonce* 函数。
版本
0.1.1
描述
在面向对象的作用域中使用 wp_nonce* 函数很困难。因此,我编写了一个扩展来在面向对象的作用域中使用 Nonces。您可以简单地创建几个 WPNonce 对象来处理多个非ces。
安装
使用 composer 进行安装
composer require mtizziani/wpnonces
如何使用
创建一个 WPNonce 对象
<?php
use \Mtizziani\WPNonce
$obj = new WPNonce();
$obj->nonce();
对象看起来像这样
<\Mtizziani\WPNonces\WPNonce> {
[private] <string|int> "action": -1
[private] <string> "nonce": "26sadfg2"
[public] <function> action( [string $action] ) {returns string}
[public] <function> nonce( [string $action] ) {return string}
[public] <function> ays() {returns mixed}
[public] <function> field( string $fieldName ) {returns string}
[public] <function> url( string $baseUrl, [string $name] ) {returns string}
[public] <function> verify(string $nonce) {returns string}
}
WPNonce->action([string $action]) 默认值 = -1。
action 属性的设置器和获取器。如果 $action 是一个字符串,则设置该属性,否则返回 action 的值。
<?php
$obj->action('myActionName');
$actionResult = $obj->action();
WPNonce->nonce([string $action]);
如果已经设置了 action,您可以通过调用 nonce 创建一个 nonce 字符串,否则您可以提供一个 action 名称,action 将被设置或覆盖。
<?php
$privateNonceKey = $obj->nonce();
// call without setting action before or want to overwrite action name
$privateNonceKey = $obj->nonce('myPrivateAction');
WPNonce->verify(string $nonceHash)
验证 nonce 属性与给定的 nonce。如果没有问题返回 true,否则如果 nonce 不同或过时返回 false。
<?php
$obj->nonce('action_a'); // creates a hash like '26sadfg2'
$verified = $obj->verify('26sadfg2'); // returned true
$notVerified = $obj->verify('3245sdf3'); // retured false
WPNonce->field(string fieldName)
生成一个具有字段名称和 nonce 值的隐藏输入节点,用于在表单中使用 <?php $fieldString = $obj->field('myField'); // 例如返回 ''
WPNonce->url(string baseURL, [string $name])
生成一个扩展了 nonce 哈希的 URL。
<?php
$url = $obj->url('http://myExample.com');
// returned like 'http://myExample.com?26sadfg2'
使用 name 属性使用 ays
<?php
$url = $obj->url('http://myExample.com', 'myNonce');
// returned like 'http://myExample.com?myNonce=26sadfg2'
使用带有参数的 base url
<?php
$url = $obj->url('http://myExample.com?param1=234');
// returned like 'http://myExample.com?param1=234&_wpnonce=26sadfg2';
WPNonce->ays()
根据我们的 obj 处理 wp_nonce_ays 命令的 ays 消息。有关详细信息,请参阅 开发者资源 wp_nonce_ays
<?php
$obj->ays();
附加一个简短的插件示例
此示例展示了如何在表单中使用我的 WPNonce 类 (未测试)
<?php
/*
Plugin Name: WPNonce Sample Form
Description: A sample to use Mtizziani\WPNonces in a form
Author: Maik Tizziani
Version: 0.0.1
Licence: MIT
*/
$fieldName = 'my_nonce_field;
$actionName = 'my_nonce_action;
$nonce = new WPNonce();
$nonce->action($action);
/**
* generate the form
*/
function createFormElement() {
ob_start(); ?>
<form method="POST" action="">
<p>
<?php echo Nonce->field($fieldName); ?>
<input type="submit" value="Submit"/>
</p>
</form>
<?php
return ob_get_clean();
}
add_shortcode('nonce_form', 'createFormElement');
/**
* processes the data submitted by the form
*/
function processFormData() {
if(isset($_POST[$fieldName])) {
if(nonce->verify($_POST[$fieldName])) {
echo 'nonce successfully verified';
// ...
} else {
echo 'verification failed';
// ...
}
}
}
add_action('init', 'processFormData');
此示例受 Pippins 插件 启发
要求
- PHP 7.2(已测试)
- Composer 用于安装
开发依赖
- PHPUnit ^6.5
- WP_Mock 0.3.0
参考文献
- Wordpress 开发者资源 了解有关 wp 函数的更多信息
- WP_Mock 用于模拟 Wordpress 函数
- PHPUnit 用于通用单元测试