用户注册挂钩无法访问表单请求

时间:2019-03-23 作者:Žilvinas

我正在尝试使用下面的代码向注册表中添加一些自定义字段。注册后,将创建带有密钥的海关字段,但这些字段没有任何值。我想我的$_POST[\'user_register_vardas\'] 里面没有任何价值。

我的html字段如下所示:

<input type="text" name="user_register_vardas" id="user_register_vardas" placeholder="<?php esc_attr_e(\'Vardas\',\'urbango-membership\') ?>" value="" required />
和我的功能:

add_action(\'user_register\', \'register_extra_fields\');
function register_extra_fields ( $user_id, $password = "", $meta = array() )
{
    update_user_meta( $user_id, \'vardas\', $_POST[\'user_register_vardas\'],true);
    update_user_meta( $user_id, \'pavarde\', $_POST[\'user_register_pavarde\'], false );
    update_user_meta( $user_id, \'telefonas\', $_POST[\'user_register_vardas\'] );
    update_user_meta( $user_id, $_POST[\'user_register_vardas\'], $_POST[\'user_register_vardas\'] ); //this key is not created
}

1 个回复
SO网友:butlerblog

的用户存在许多问题update_user_meta() 在您的功能中。

首先,您不应该直接从$_POST 没有先消毒。这是一个很好的方法来打开自己的漏洞。(注意:您没有指明字段类型,因此我假设它们是text input - 您需要进行相应的调整。)

接下来,的最后一个参数update_user_meta() (第一个值为“true”,第二个值为“false”),用于比较前一个值。您正在注册新用户,因此这些字段不会有现有值。把这个论点去掉。

您输入的最后一个字段有问题。如前所述,您使用输入值作为字段元键。如果是文本字段,则意味着元键可以是用户输入的任何内容。元键应该是静态的,并且可能以某种方式与字段名匹配(就像前面的字段一样)。

最后一点user_register 仅通过$user_id 论点不知道你从哪里得到的$password$meta 来自,但这些不是valid arguments for the hook.

这里有一个盲目的尝试来纠正这些问题:

add_action(\'user_register\', \'register_extra_fields\');
function register_extra_fields ( $user_id ) {
    update_user_meta( $user_id, \'vardas\', sanitize_text_field( $_POST[\'user_register_vardas\'] ) );
    update_user_meta( $user_id, \'pavarde\', sanitize_text_field( $_POST[\'user_register_pavarde\'] ) );
    update_user_meta( $user_id, \'telefonas\', sanitize_text_field( $_POST[\'user_register_vardas\'] ) );
    update_user_meta( $user_id, \'user_register_vardas\', sanitize_text_field( $_POST[\'user_register_vardas\'] ) );
}

相关推荐

Wordpress Database Cleanup

重建WordPress数据库和更改网站的目录结构有多困难?我继承了两个网站的维护工作,我很确定目录结构设置不正确,数据库一团糟(两个网站有6个数据库?)。我是WordPress的新手,我怀疑现在使用现有网站重建网站会更容易。丢失数据没什么大不了的,网站也没什么特别的。该网站运行正常,但维护起来越来越困难。这是一个合理的计划吗?