簡體   English   中英

WP登錄和密碼比較

[英]WP Login & Password comparisons

我如何通過使用wp函數的ajax比較密碼和登錄? 如果用戶輸入錯誤密碼顯示錯誤msj,否則確定。 我試試這段代碼

$username = '';
$password = '';

$auth = wp_authenticate( $username, $password );


if ( is_wp_error( $auth ) ) {
    $error_string = $auth->get_error_message();
    echo '<div id="message" class="error"><p>' . $error_string . '</p></div>';
}
else {
    echo "Ok!";
}

要使用ajax創建登錄頁面,請按照以下步驟操作:

1)在任何自定義模板中創建表單html或從管理員頁面創建頁面>>添加新

<div class="top_bar">
    <div class="container">
        <div class="ajax_login">
            <form id="login" action="login" method="post">
                <h1><?php esc_attr_e('User login','wordpress') ?></h1>
                <p class="status"></p>
                <input id="username" type="text" name="username" placeholder="<?php esc_attr_e('Username','wordpress') ?>">
                <input id="password" type="password" name="password" placeholder="<?php esc_attr_e('Password','wordpress') ?>">
                <div class="forgotten_box">
                    <a class="lost" href="<?php echo esc_url(wp_lostpassword_url()); ?>"><?php esc_attr_e('Lost your password?','wordpress') ?></a>
                </div>
                <input class="submit_button" type="submit" value="Login" name="submit">
                <?php wp_nonce_field( 'ajax-login-nonce', 'security' ); ?>
            </form>
            <div class="ajax_login_overlay"></div>
            <?php if (is_user_logged_in()):?>
                <a class="login_button" href="<?php echo wp_logout_url( home_url() ); ?>"><?php esc_attr_e('Logout','wordpress') ?></a>
            <?php else: ?>
                <a class="login_button" id="show_login" href=""><?php esc_attr_e('Login','wordpress') ?></a>
            <?php endif; ?>
        </div>
    </div>
</div>

2)在當前活動主題functions.php文件中添加以下代碼

有關更多幫助,請參閱此鏈接: 登錄Ajax呼叫

/********* AJAX Login ***********/
function yourtheme_ajax_login_init(){
    wp_register_script('ajax-login-script', get_template_directory_uri() . '/js/ajax-login-script.js', array('jquery') );
    wp_enqueue_script('ajax-login-script');
    wp_localize_script( 'ajax-login-script', 'ajax_login_object', array(
        'ajaxurl' => admin_url( 'admin-ajax.php' ),
        'redirecturl' => home_url(),
        'loadingmessage' => esc_html__('Sending user info, please wait...', 'wordpress')
    ));
    // Enable the user with no privileges to run ajax_login() in AJAX
    add_action( 'wp_ajax_nopriv_ajaxlogin', 'ajax_login' );
}
// Execute the action only if the user isn't logged in
if (!is_user_logged_in()) {
    add_action('init', 'yourtheme_ajax_login_init');
}
if (!function_exists('ajax_login')) {
    function ajax_login(){
        // First check the nonce, if it fails the function will break
        check_ajax_referer( 'ajax-login-nonce', 'security' );
        // Nonce is checked, get the POST data and sign user on
        $info = array();
        $info['user_login'] = $_POST['username'];
        $info['user_password'] = $_POST['password'];
        $info['remember'] = true;
        $user_signon = wp_signon( $info, false );
        if ( is_wp_error($user_signon) ){
            echo json_encode(array('loggedin'=>false, 'message'=> esc_html__('Wrong username or password.', 'wordpress'))); //Send Error Message on login Failed.
        } else {
            echo json_encode(array('loggedin'=>true, 'message'=> esc_html__('Login successful, redirecting...', 'wordpress'))); //Send Message on Login Success .
        }
        wp_die();
    }
}

3)對我們放在js /文件夾中的自定義js文件ajax-login-script.js進行排隊,在functions.php文件中寫下面的代碼

jQuery(document).ready(function($) {
    "use strict";

    // Show the login dialog box on click
    $('a#show_login').on('click', function(e){
        $('.ajax_login_overlay').fadeIn(500);
        $('form#login').fadeIn(500);
        e.preventDefault();
    });

    $('.ajax_login_overlay').on('click', function(e){
        $('form#login').fadeOut(500);
        $('.ajax_login_overlay').fadeOut(500);
        $('form#register_form').hide();
        $('.ajax_login .status').html('');
        $('#registration-error-message').html('');
        $('form#login').hide();
        $('form#register_form .field input').val('');
    });

    // Perform AJAX login on form submit
    $('form#login').on('submit', function(e){
        $('form#login p.status').show().text(ajax_login_object.loadingmessage);
        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: ajax_login_object.ajaxurl,
            data: {
                'action': 'ajaxlogin', //calls wp_ajax_nopriv_ajaxlogin
                'username': $('form#login #username').val(),
                'password': $('form#login #password').val(),
                'security': $('form#login #security').val() },
            success: function(data){
                $('form#login p.status').text(data.message);
                if (data.loggedin === true){
                    document.location.href = ajax_login_object.redirecturl;
                }
            }
        });
        e.preventDefault();
    });

});

我希望它會對你有所幫助。

試試下面的代碼

$user = get_user_by( 'login', $username );
if($user && wp_check_password($pass, $user->data->user_pass, $user->ID)){
   echo "That's it";
}
else{
   echo "Nope";
}

參考: https//codex.wordpress.org/Function_Reference/wp_check_password

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM