Wordpress一次访问受密码保护的页面

时间:2018-03-12 08:16:31

标签: wordpress password-protection one-time-password totp

我正在创建一个受密码保护的wordpress页面。它持有一个需要在3小时的定时后提交的表格。在此期间之后,用户应该退出,无论他是否填写了表格。他不应该再次登录了。

截至目前,我已经实现了设置计时器,之后页面内容消失。现在我需要一个工具来阻止特定用户重新登录并重新提交表单。用户未在我的网站上注册。我想通过电子邮件向他们发送受保护页面的密码。

我无法在登录后更改密码,因为截至目前,该页面受到每个潜在用户需要使用的一个密码的保护。

对我而言,避免重新登录的最简单方法似乎是为此特定页面发出一次性密码,因此根据要求,每个用户都可以获得自己的OTP。

我正在寻找一个插件,它会为特定的wp页面生成一个OTP列表。 非常感谢简单的解决方案,因为我没有经验丰富的编码!

感谢您的帮助。每个人都从某处开始......

1 个答案:

答案 0 :(得分:0)

像这样(未经测试):

$token = $_GET[ 'token' ];

if( is_numeric( $token ) AND metadata_exists( 'post', get_the_ID(), 'token_' . $token ) ):


    if( empty( get_metadata( 'post', get_the_ID(), 'token_' . $token, true ) ) )
        update_metadata( 'post', get_the_ID(), 'token_' . $token, time() + ( HOUR_IN_SECONDS * 3 );


    if( $stamp = get_metadata( 'post', get_the_ID(), 'token_' . $token, true ) < time() ):

        echo 'Here goes your form';

        echo 'You have ' . $stamp - time() . ' seconds.';

    else:

        echo 'nope';

        delete_metadata( 'post', get_the_ID(), 'token_' . $token )

    endif;

else:

    echo 'nope';

endif;

因此,您只需要创建一个空的postmeta字段,例如token_98751328475,并分享example.com/myformpage?token=98751328475之类的网址。

我可能会创建一个确认页面来启动计时器,这样它就不会在第一次通话时启动。