WordPress:防止重定向到/wp-login.php

时间:2020-03-27 10:50:31

标签: php wordpress authentication redirect

所以我做了一个自定义的登录页面。 但是如果我按忘记密码,然后在我的自定义忘记密码页面上填写电子邮件。 然后按一下我重定向到的“发送新密码”按钮:wp-login.php?checkemail=confirm

而不是重定向回位于/login

上的自定义登录页面

我用于登录/忘记密码页面的代码如下:

<?php


session_start();
$attributes['lost_password_sent'] = isset( $_REQUEST['checkemail'] ) && $_REQUEST['checkemail'] == 'confirm';

get_header(); ?>

<div class="page page--login page--border">
    <div class="banner">
        <h1></h1>
    </div>
    <div class="container">
        <div class="row">
            <div class="col-sm-12">
                <h1><?php the_title(); ?></h1>
            </div>
            <div class="col-sm-6">
                <div class="page--login__content">

                    <?php the_content() ?>
                </div>
            </div>
            <div class="col-sm-6">
                <div class="page--login__form">

                    <?php if ( is_user_logged_in() ) { ?>

                        <h3>U bent al ingelogd, <a href="<?php echo wp_logout_url(home_url()); ?>">uitloggen?</a></h3>

                    <?php } else { ?>

                        <?php if (is_page('wachtwoord-vergeten')) : ?>

                            <?php if (isset($_SESSION['post_error'])) :
                                foreach ($_SESSION['post_error'] as $error => $message) : ?>

                                    <p class="error"><?php echo $message[0]; ?></p>

                                <?php endforeach;
                                unset($_SESSION['post_error']);
                            endif; ?>

                            <form name="lostpasswordform" id="lostpasswordform" class="lostpasswordform" action="<?= site_url("/wp-login.php?action=lostpassword") ?>" method="post">
                                <label for="user_login">Email</label>
                                <input type="text" name="user_login" id="user_login" value="" size="20" placeholder="" required class="loginform--input" />
                                <input name="wp-submit" id="wp-submit" type="submit" class="button button--secondary button--login" value="Wachtwoord resetten" />
                            </form>

                        <?php elseif (is_page('wachtwoord-resetten')) :

                            if (isset($_GET["action"])) {
                                $hash = $_GET["request"];
                                $date = date("jmY");
                                $hashcheck = md5('requestdate=' . $date);
                                $rp_key = $_REQUEST['key'];
                                $rp_login = $_REQUEST['login'];
                                $user = check_password_reset_key( $rp_key, $rp_login );
                                if ($hashcheck != $hashcheck){
                                    echo "<h3>Deze link is verlopen.</h3>";
                                } elseif ( ! $user || is_wp_error( $user ) ) {
                                    if ( $user && $user->get_error_code() === 'expired_key' ) {
                                        echo "<h3>Deze link is verlopen.</h3>";
                                    } else {
                                        echo "<h3>Deze link is niet geldig.</h3>";
                                    }
                                } else {
                                    if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
                                        if ( isset( $_POST['pass1'] ) ) {
                                            if ( $_POST['pass1'] != $_POST['pass2'] ) {
                                                echo '<p class="error">Wachtwoorden komen niet overeen. Probeer het opnieuw.</p>';
                                            } else {
                                                reset_password( $user, $_POST['pass1'] );
                                                $url = get_home_url() . '/login';
                                                wp_redirect( $url );
                                                $_SESSION['change_pw_success'] = true;
                                            }
                                        } else {
                                            echo '<p class="error">Ongeldige aanvraag.</p>';
                                        }
                                    } ?>

                                    <form name="frmreset" id="frmreset" action="" method="post">
                                        <label for="pass1">Wachtwoord</label>
                                        <input type="password" name="pass1" id="pass1" class="input" size="20" value="" autocomplete="off" placeholder="" required/>
                                        <label for="pass2">Wachtwoord herhalen</label>
                                        <input type="password" name="pass2" id="pass2" class="input" size="20" value="" autocomplete="off" placeholder="" required/>
                                        <input name="wp-submit" id="wp-submit" type="submit" class="button button--secondary button--login" value="Wachtwoord resetten" />
                                        <input type="hidden" name="task" value="reset" />
                                    </form>

                                    <?php
                                }
                            } else {
                                echo "<h3>Deze link is ongeldig.</h3>";
                            } ?>

                        <?php else: ?>

                            <?php if (isset($_SESSION['invalid_login'])) : ?>

                                <p class="error"><?php echo $_SESSION['invalid_login']; ?></p>

                                <?php unset($_SESSION['invalid_login']);
                            endif; ?>

                            <?php if (isset($_GET['checkemail']) && $_GET['checkemail'] == 'confirm') : ?>

                                <p class="success">De mail is succesvol verstuurd!</p>

                                <?php unset($_SESSION['invalid_login']);

                            endif; ?>

                            <?php if ( $_SESSION['change_pw_success'] == true  ) : ?>
                                <p class="success">Wachtwoord is succesvol veranderd!</p>
                                <?php $_SESSION['change_pw_success'] = false ; ?>
                            <?php endif; ?>
                            <form name="loginform" id="loginform" class="loginform" action="<?= site_url("/wp-login.php") ?>" method="post">
                                <label for="user_login">Gebruikersnaam</label>
                                <input name="log" id="user_login" class="loginform--input" type="text" placeholder="" required />
                                <label for="user_pass">Wachtwoord</label>
                                <input name="pwd" id="user_pass" class="loginform--input" type="password" placeholder="" required />
                                <input type="hidden" name="redirect_to" value="<?= site_url("") ?>" />
                                <a class="forgot" href="/wachtwoord-vergeten/">Wachtwoord vergeten?</a>
                                <input name="wp-submit" id="wp-submit" type="submit" class="button button--secondary button--login" value="Inloggen" />
                            </form>
                        <?php endif; ?>

                    <?php } ?>

                </div>
            </div>
        </div>
    </div>
    <?php

    ?>
</div>

必须进行哪些更改,才能转到/login而不是/wp-login.php?checkemail=confirm

0 个答案:

没有答案
相关问题