mtizziani/wpnonces

该包最新版本(0.1.1)没有提供许可证信息。

安装: 1

依赖: 0

建议: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

语言:HTML

类型:

0.1.1 2018-02-05 16:39 UTC

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

参考文献