理论上,这可以通过在用户更新密码时将其保存在其他地方来实现。
Note that this sort of thing is hardly ever recommendable.
在几乎所有情况下,都有一种更好的体系结构方法,使得不必显示纯文本密码。
也就是说,如果你一定要这么做,那么可以这样做:
funtion wpse_97127_save_passes( $errors, $update, $user )
{
if (
empty( $errors->errors ) &&
! empty ( $_POST[\'pass1\'] )
) {
/* if you must save it in reversible form, at least don\'t save it in plain-text */
$pass = base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
md5(AUTH_KEY),
$_POST[\'pass1\'],
MCRYPT_MODE_CBC,
md5(md5(AUTH_KEY))
)
);
// do something with $pass, i.e. save it somewhere
}
}
add_action( \'user_profile_update_errors\', \'wpse_97127_save_passes\', 0, 3 );
上述情况可以颠倒如下:
$pass_from_db = $wpdb->get_results( /* retrieve encrypted, but reversible pass from db*/ );
$pass = rtrim(
mcrypt_decrypt(
MCRYPT_RIJNDAEL_256,
md5(AUTH_KEY),
base64_decode($pass_from_db),
MCRYPT_MODE_CBC,
md5(md5(AUTH_KEY))
),
"\\0"
);
请不要在生产环境中使用单个实体的用户帐户在未经其同意或知情的情况下执行此操作。这不仅构成不良行为,而且是不道德的行为。
我只在一个特定的用户角色中执行上述操作,该角色的功能有限,其新用户总是由管理员或其他更高级别的角色设置,其密码首先与多个人共享
但我还是感觉不太好。