从受密码保护的页面注销后使密码无效

时间:2013-10-24 作者:gurung

在一个基于WP的网站中,我有一个自定义表单,我需要对公众隐藏该表单,只允许少数人访问,然后他们会从我那里获得密码,输入密码,访问表单并提交。在提交表单时,我将它们重定向到另一个页面。我在我的functions.php, 一旦重定向,就会将其从受密码保护的页面中注销:

add_action( \'wp\', \'post_pw_sess_expire\' );
    function post_pw_sess_expire() {
    if ( isset( $_COOKIE[\'wp-postpass_\' . COOKIEHASH] ) )
    // Setting a time of 0 in setcookie() forces the cookie to expire with the session
    setcookie(\'wp-postpass_\' . COOKIEHASH, \'\', 0, COOKIEPATH);
}
现在的转折点是:一旦这些select-level中的任何一个退出密码保护页面,我需要密码变为无效。不一定,但有点像一次性密码。一个解决方案会很好,如果不可能,请给我一些建议或替代方案。

2 个回复
最合适的回答,由SO网友:palPalani 整理而成

提交表单后,在重定向到新页面之前,请重置当前用户的密码。

一个简单的wp_update_user(array(\'ID\' => $userid, \'user_pass\' => \'YourNewPaSSword\')); 会为你做一切的。

SO网友:brasofilo

我做了一个小测试,它成功了,但是no idea 如果技术上正确:

add_action( \'wp\', \'post_pw_sess_expire\' );

function post_pw_sess_expire() 
{
    if ( isset( $_COOKIE[\'wp-postpass_\' . COOKIEHASH] ) )
    {
        // Setting a time of 0 in setcookie() forces the cookie to expire with the session
        setcookie(\'wp-postpass_\' . COOKIEHASH, \'\', 0, COOKIEPATH);
        add_action( \'wp_footer\', \'change_pw_wpse_119986\' );
    }
}

function change_pw_wpse_119986()
{
    global $post;
    if( $post->post_password == md5(\'something\') )
        return;
    $post->post_password = md5(\'something\');
    wp_update_post( $post );
    remove_action( \'wp_footer\', \'change_pw_wpse_119986\' );
}
但还有一个更大的问题:我们每个页面都有一个密码,而不是每个人都有一个密码。一旦第一个进入关卡,下一个将无法使用它。您需要构建自己的解决方案,设置不同的密码,并在用户使用密码时立即将其取消设置。

结束

相关推荐

security issue in wordpress?

我已在中安装wordpresswww.mysite.com/user 现在假设有人熟悉wordpress,他/她可以通过www.mysite.com/user/memberswww.mysite.com/user/groups 甚至他都能看到www.mysite.com/user 没有登录到我的网站。有什么方法可以防止这种情况发生吗。类似于如果他没有登录或任何类型的重定向到特定url,访问就会被拒绝。或者你没有权限访问/members/ 在此服务器上。因此,我面临着很多问题。我使用frisco作为budd