【问题标题】:Wordpress one time access to password protected pageWordpress 一次性访问受密码保护的页面
【发布时间】:2018-03-12 08:16:31
【问题描述】:

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

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

我不能在登录后简单地更改密码,因为到目前为止,该页面受每个潜在用户都需要使用的密码保护。

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

我正在寻找一个为特定 wp 页面生成 OTP 列表的插件。 非常感谢简单的解决方案,因为我不擅长编码!

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

【问题讨论】:

  • 我可能会在 postmeta 字段中设置一个令牌,并在第一次调用时将其绑定到一个瞬态(计时器)......然后你只需将令牌作为参数附加到 url......如果需要那里一页可以是多个令牌(访问)

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


【解决方案1】:

类似这样的东西(未测试):

$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,并共享 URL,例如 example.com/myformpage?token=98751328475

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

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多