Background Problem
我现在工作的网站使用定制的前端表单进行内容、术语和用户编辑和创建。非管理员访问wp admin被阻止。
它们都使用基本的wp\\U ajax功能。
在用户编辑表单上,函数使用wp_update_user()
并使用update_user_meta()
.
刚才我发现一个保存的元字段被其他人保存到另一个用户ID(我的,管理员)。
代码没有更改,因为它可以工作,即使在我使用相同的函数更新了被覆盖的用户元之后。
Code
下面是保存元字段的剥离代码。
add_action(\'wp_ajax_edit-author\', \'process_edit_author\');
function process_edit_author() {
global $current_user;
if ( empty($_POST) || !wp_verify_nonce($_POST[$current_user->user_login],\'edit-author\') ) {
echo \'You targeted the right function, but sorry, your nonce did not verify.\';
die();
} else {
$profile_upload = $_FILES[\'profile-picture\'];
if ($profile_upload[\'name\'][0]) {
$profile_picture = attach_uploads($profile_upload);
update_user_meta( $current_user->ID, \'profile-picture\', $profile_picture[0]);
}
wp_redirect($return);
exit;
die();
}
}
The
attach_uploads()
将上载的文件另存为附件。然后将第一个文件附件ID保存到用户meta。
Analysist
到目前为止,我只能说图片是由其他人的帐户上传的,因为附件的作者不是我。
Need Help
是否有人发现此问题?我应该在哪里以及如何调试此问题?我怎样才能防止这种情况再次发生?
提前谢谢你。