用户注册错误时自定义注册URL丢失

时间:2014-04-02 作者:Wilf

我遵循了本网站和互联网其他地方的指示,旨在为某些人提供注册链接,让他们注册特定的用户角色。

我要赋予的用户角色some, 但并非所有人都有一种习惯,称之为“无监控”。通过将此代码添加到我的函数中,我可以使其正常工作。php文件:

    // signup stuff
    add_action(\'register_form\',\'show_role_field\');
    function show_role_field(){ ?>
    <input id="role" type="hidden" tabindex="20" size="25" value= "<?php if (isset($_GET[\'role\'])) {echo $_GET[\'role\'];} ?>"  name="role"/>
    <?php
    }

    add_action(\'user_register\', \'register_role\');

    function register_role($user_id, $password="", $meta=array()) {

       $userdata = array();
       $userdata[\'ID\'] = $user_id;
       $userdata[\'role\'] = $_POST[\'role\'];

       //only allow if user role is my_role

       if ($userdata[\'role\'] == "unmonitored"){
          wp_update_user($userdata);
       }
    }
这意味着如果有人在www.[mywebsiteurl].com/wp-login.php?action=register&role=unmonitored 他们被赋予了“不受监控”的用户角色,这是完美的。

但问题是,如果他们输入了一个已经收到的电子邮件地址,或者输入了错误的邀请码(我使用的是一个名为Easy invitation Codes的插件),从而导致注册失败http://wordpress.org/plugins/baw-invitation-codes/) 在上显示错误www.[mywebsiteurl].com/wp-login.php?action=register - 关键&role=unmonitored 从URL中消失,用户完成注册,并为其分配默认用户角色,而不是我需要的“无监控”角色。

有人能帮我停止错误页面剥离吗&;角色=是否从URL中取消监视?

很乐意提供所需的任何代码,如果我遗漏了任何信息,我深表歉意-我对Wordpress的这方面还不是很熟悉。

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

这是一个简单的修复方法,只需使用$_REQUEST 而不是$_GET 在您的隐藏字段中register_form. 更重要的是,您应该在回显之前对字段进行消毒,否则您将很容易接受注射CSRF:

 <?php if ( isset( $_REQUEST[\'role\'] ) ) echo esc_attr( $_REQUEST[\'role\'] ) ?>

结束

相关推荐

从Functions.php中导入WordPress XML文件

我正在开发一个主题,它有不同的添加内容的方法,因此,Wordpress的默认安装不会显示任何内容。我想知道在主题被激活后,是否可以通过内部函数和/或挂钩自动导入XML文件?User installs theme > User activates theme > Code behind the scenes loads up an XML file and performs a silent import of its contents当前要导入XML文件,您必须为Wordpress