簡體   English   中英

密碼更新用戶注銷時的WordPress

[英]Wordpress when password updated user is logout

我在前端和即時通訊使用wp_user_update函數更改了密碼,但是當用戶更改密碼時,它已經注銷。 問題是我的舊Cookie沒有更新,所以如何在不注銷的情況下更新密碼。有任何想法嗎?

global $wpdb, $current_user;

$user_id =  $current_user->ID;
wp_update_user(array('ID'=>$user_id,'user_pass'=>$_POST['user_pass']));

WordPress支持人員Aaron Forgue的答案已有 3年歷史,但可能很有趣。 我必須更改$wpdb->query()使其起作用:

global $wpdb;

$profile_id = $_POST['prof_id'];
$username = $_POST['log_name'];
$password = $_POST['wachtwoord'];
$md5password = wp_hash_password($password);

// You may want to use $wpdb->prepare() here. As it stands, malicous code could be passed in via $_POST['prof_id'] or $_POST['log_name']
$wpdb->query( $wpdb->prepare( 
        "
            UPDATE $wpdb->users SET user_pass = %s WHERE ID = %d
        ", 
        $md5password, 
        $profile_id 
    ) );

// Here is the magic:
wp_cache_delete($profile_id, 'users');
wp_cache_delete($username, 'userlogins'); // This might be an issue for how you are doing it. Presumably you'd need to run this for the ORIGINAL user login name, not the new one.
wp_logout();
wp_signon(array('user_login' => $username, 'user_password' => $password));

對於上述技巧,請使用該插件: http : //wordpress.org/extend/plugins/change-password-e-mail/

Robahas所述 ,請確保發送標頭之前運行此代碼,否則wp_signon()將不起作用,並且無論如何用戶都將注銷。

暫無
暫無

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

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