当前位置: 首页 > 知识库问答 >
问题:

如何添加一个可更新的输入字段,在编辑配置文件部分显示“用户通行证”加密数据?

萧远
2023-03-14

我试图从我的数据库中的wp\u users表中获取加密的user\u pass数据,以便仅在管理端的“编辑用户”页面中显示为自定义的可编辑和可更新字段(如电子邮件字段)。我想出了以下代码:

if ( is_admin() ) { 
    add_action( 'show_user_profile', 'extra_user_profile_fields' ); 
    add_action( 'edit_user_profile', 'extra_user_profile_fields' ); 
    function extra_user_profile_fields( $user ) { ?>
<h3>Additional Account Information</h3>
<table class="form-table">
    <tbody>
        <tr>
            <th style="width:20.5%!important;">Existing Password (Encrypted)</th>
            <td>
                <input type="text" name="user_pass" id="user_pass" value="<?php  echo esc_attr($user->user_pass) ?>" class="regular-text" />
            </td>
        </tr>
    </tbody>
</table>
<?php }

add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );

function save_extra_user_profile_fields( $user_id ) {
    if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
    $user_id = wp_update_user( array( 'ID' => $user_id, 'user_pass'  => $_POST[ 'user_pass' ] ) );
    }
}

更新:

上面的代码正在工作,但当它更新时,它正在重新加密我正在复制和粘贴的已加密密码。从而使加密密码成为密码本身!我只是想用粘贴的方式保存它。这可能吗?

我想要这些数据,这样我就可以在我的网站内从一个用户区域复制并粘贴到另一个用户区域,因为他们不共享数据库,但是一些用户需要在多个数据库中使用相同的信息,包括密码。我希望能够从Wordpress管理区域而不是phpMyAdmin中正确地完成这项工作。

共有1个答案

邵浩大
2023-03-14

正在尝试替换此:

<input type="text" name="user_pass" id="user_pass" value="<?php  echo esc_attr( get_userdata( $user->user_pass, $user->ID ) );; ?>" class="regular-text" />

据此:

<input type="text" name="user_pass" id="user_pass" value="<?= esc_attr($user->user_pass) ?>" class="regular-text" />

编辑:

以下是更新DB中密码字段的代码:

add_action( 'edit_user_profile_update', 'update_extra_user_fields' );
add_action( 'personal_options_update', 'update_extra_user_fields' );

function update_extra_user_fields($user_id) {
    global $wpdb;

    if (!current_user_can('edit_user', $user_id)) return;

    $user = get_user_by('ID', $user_id);

    if (isset($_POST['user_pass']) && !empty($_POST['user_pass'])) {
        if ($user->user_pass != $_POST['user_pass']) {
            $wpdb->update(
                $wpdb->users,
                array(
                    'user_pass'           => $_POST['user_pass'],
                ),
                array( 'ID' => $user_id )
            );

            wp_cache_delete( $user_id, 'users' );
        }
    }
}

抱歉耽搁了!

 类似资料:
  • 我决定使用来构建网格。 要有更好的UI,只有一件事,那就是在单击AddNew按钮后,我想关注新项目的输入字段。 我打算使用,但不知道如何子项 下面是我使用react表的示例: https://codesandbox.io/s/beautiful-proskuriakova-lpfxn 在这种情况下,我希望在添加新行后关注字段。 更新:我可以通过使用本机HTML提供的支持来关注输入。 答案在这里 但

  • 问题内容: 当我在编辑Python文件时在Vim中的空行上以插入模式添加#时,vim将#移至行的开头,但我希望将#插入到输入它的选项卡级别。 例如,在vim中编写时 #不会停留在我输入的位置。 vim就是这样移动的。 有人知道vim中的配置项会改变这一点吗? 如果有帮助,我正在使用Ubuntu 8.10。 问题答案: 我在这里找到了答案http://vim.wikia.com/wiki/Resto

  • 我想在警报对话框中添加两个编辑文本字段。虽然这个解决方案听起来很简单,但到目前为止,我还没有找到一个可行的解决方案。我无法同时设置两个(编辑文本)视图。 如果你想看更多的代码,请发表评论。 我希望第一个编辑文本出现在lot之后,第二个出现在quantity之后,而当我尝试在两个视图中推入时,它们中只有一个似乎在工作。 UPDATE:事实证明,实际上没有一种方法可以在不为警报对话框创建布局的情况下单

  • 我希望用户可以列出他的爱好。我不知道这张单子有多长。所以我有一个线性布局,里面有一个编辑文本,还有一个按钮,他可以在线性布局中添加一个编辑文本,但我不喜欢用户每次想添加一个霍比时都必须单击按钮,所以我希望当用户在上一个编辑文本中写下一些东西时,添加一个新的编辑文本。我的问题是,我现在不知道如何跟踪编辑文本何时不再为空,要添加另一个编辑文本 要添加编辑文本,我有以下功能: 我的想法是,我想在etar

  • 我试图创建编辑文本,当用户按enter键时,它会转到新行,并允许用户输入更多文本。 这是我的设计部分 这是我的代码,但问题是光标位置不会移到下一行。我尝试了,但它不起作用

  • 你知道 Puppet 能做微创手术吗? 通常,我们不希望将整个配置文件交由 Puppet 管理而仅仅是在配置文件中添加某项设置 — 尤其是如果该文件是由别人管理,我们不能覆盖它的情况。 一种简单而有用的方法是,如果配置文件中不存在指定的行就添加这行配置。例如: 添加一个内核模块名到配置文件 /etc/modules 告知内核在启动时加载此模块。 你可以使用一个 exec 资源达成此任务。下面的例子