PHP的WordPress的密码更改-注销我!

Fea*_*hal 5 php wordpress

我正在尝试构建自己的简单的wordpress密码更改脚本(嗯,实际上是基于插件)-密码已成功更改-但更改完成后却注销了我!下面是使用的代码。谁能看到我被注销的地方以及如何防止它退出?谢谢!

$update = $wpdb->query($wpdb->prepare("UPDATE {$wpdb->users} SET `user_pass` = %s WHERE `ID` = %d",array(wp_hash_password($_POST['admin_pass1']),$user_ID)));

if(!is_wp_error($update))
{
    wp_cache_delete($user_ID,'users');
    wp_cache_delete($user->user_login,'userlogins');
    wp_logout();
    if (wp_signon(array('user_login'=>$user->user_login,'user_password'=>$_POST['admin_pass1']),false)):
        wp_redirect(admin_url());
    endif;
    ob_start();
}
Run Code Online (Sandbox Code Playgroud)

Sho*_*hoe 1

其实是这样的:

if(!is_wp_error($update))
{
    wp_cache_delete($user_ID,'users');
    wp_cache_delete($user->user_login,'userlogins');
    wp_logout();
    if (wp_signon(array('user_login'=>$user->user_login,'user_password'=>$_POST['admin_pass1']),false)):
        wp_redirect(admin_url());
    endif;
    ob_start();
}
Run Code Online (Sandbox Code Playgroud)

意味着如果没有错误,将执行以下函数。wp_logout()如果执行条件块,则始终会调用此函数之一。

如果这不是你想要的,那么你要考虑更换:

if(!is_wp_error($update))
Run Code Online (Sandbox Code Playgroud)

和:

if(is_wp_error($update))
Run Code Online (Sandbox Code Playgroud)