Login Form Redirection

时间:2016-01-15 作者:Neeraj Mishra

目前,我正在网站上使用一个主题和登录表单,当我正确登录时,它会将用户重定向到相应的URL。

不幸的是,如果我在用户名/密码中出错,或者如果用户名/密码的所有字段都为空,那么它会将您转发给wp-login.php, 它向用户摇动它的盒子。破坏了一致的品牌体验。我想在自定义登录页上显示所有错误,而不是在默认情况下wp-login.php

有人知道我该怎么做吗?

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

将这两块代码添加到functions.php 或者制作一个插件。一切都应该用注释来解释。

您也可以使用jQuery Validate plugin 要通过ajax检查用户名、密码,并在用户禁用JS时备份这两块代码。

这两段代码应涵盖所有可能的失败登录场景:

两个输入均为空,一个输入为空,两个输入均不正确

//Login failed - username and password entered but incorrect 
add_action( \'wp_login_failed\', \'damn_login_failed\' );

function damn_login_failed( $user ) {

    $referrer = $_SERVER[\'HTTP_REFERER\'];

    //Make sure we don\'t already have a failed login attempt to prevent double query string
    if ( ! strstr( $referrer, \'?login=failed\' ) ) {

        //Redirect to CURRENT page and append a querystring of login failed
        wp_redirect( $referrer . \'?login=failed\' );
    } 
    else {

        wp_redirect( $referrer );
    }

    exit;
}


//Login failed - no username and password entered
add_action( \'authenticate\', \'damn_login_blank\' );

function damn_login_blank( $user ) {

    if ( isset( $_SERVER[\'HTTP_REFERER\'] ) ) {

        $referrer = $_SERVER[\'HTTP_REFERER\'];
    }
    else {

        $referrer = \'\';
    }

    $error = false;

    //Check your username and password inputs - these might be different if you changed them - \'log\' is the name attribute of username and \'pwd\' for password, just change to whatever you have
    if( isset( $_POST[\'log\'] ) && $_POST[\'log\'] == \'\' || isset( $_POST[\'pwd\'] ) && $_POST[\'pwd\'] == \'\' ) {

        $error = true;
    }

    //Check that we\'re not on the default login page
    if ( ! empty( $referrer ) && ! strstr( $referrer,\'wp-login\' ) && ! strstr( $referrer, \'wp-admin\' ) && $error ) {

        //Make sure we don\'t already have a failed login attempt to prevent double query string
        if ( ! strstr( $referrer, \'?login=failed\' ) ) {

            //Redirect to CURRENT page and append a querystring of login failed
            wp_redirect( $referrer . \'?login=failed\' );
        } 
        else {

            wp_redirect( $referrer );
        }

        exit;
    }
}

相关推荐

Redirect Css files to https

在哪里可以找到负责调用Css文件的文件,并测试它们的链接是http还是https?我想测试请求是否为https,如果是,那么很好,如果不是,请将其更改为https在函数中。php我找到了负责调用主题Css的函数,下面是它的代码:if (!function_exists(\'jobcareer_front_scripts\')) { function jobcareer_front_scripts() { global $jobcareer_options;