前端注册表代码-密码字段未保存

时间:2017-11-07 作者:730wavy

我有一个前端注册表,除了密码设置不正确外,它几乎可以完美地工作。

在我的功能中。php我有-

/**
 * Registration form
 *
 */

add_action(\'template_redirect\', \'register_a_user\');
function register_a_user(){
  if(isset($_GET[\'do\']) && $_GET[\'do\'] == \'register\'):
    $errors = array();
    if(empty($_POST[\'user\']) || empty($_POST[\'email\'])) $errors[] = \'provide a user and email\';
    if(!empty($_POST[\'spam\'])) $errors[] = \'gtfo spammer\';
    if(!empty($_POST[\'pass1\']) && !empty($_POST[\'pass2\'])) $error[] = \'The passwords you entered do not match\';

$account = esc_attr($_POST[\'account_type\']);
    $user_login = esc_attr($_POST[\'user\']);
    $user_email = esc_attr($_POST[\'email\']);
 $user_pass = esc_attr($_POST[\'pass1\']);
 $user_pass2 = esc_attr($_POST[\'pass2\']);
    require_once(ABSPATH.WPINC.\'/registration.php\');

    $sanitized_user_login = sanitize_user($user_login);
    $user_email = apply_filters(\'user_registration_email\', $user_email);

    if(!is_email($user_email)) $errors[] = \'invalid e-mail\';
    elseif(email_exists($user_email)) $errors[] = \'this email is already registered, bla bla...\';

    if(empty($sanitized_user_login) || !validate_username($user_login)) $errors[] = \'invalid user name\';
    elseif(username_exists($sanitized_user_login)) $errors[] = \'user name already exists\';

    if(empty($errors)):
 if ( $_POST[\'pass1\'] == $_POST[\'pass2\'] ) {

 $user_data = array (
        \'user_login\' => $sanitized_user_login,
        \'user_password\' => $user_pass,     
        \'user_email\' => $user_email,
        \'role\' => $account
    );

    // Create the user
    $user_id = wp_insert_user( $user_data );

} else { 
$errors[] = \'passwords dont match\'; 
}


      if(!$user_id):
        $errors[] = \'registration failed...\';
      else:
        wp_new_user_notification($user_id);
      endif;
    endif;

    if(!empty($errors)) define(\'REGISTRATION_ERROR\', serialize($errors));
    else define(\'REGISTERED_A_USER\', $user_email);
  endif;
}
在我的注册页面模板上--

<?php
  if(defined(\'REGISTRATION_ERROR\'))
    foreach(unserialize(REGISTRATION_ERROR) as $error)
      echo "<div class=\\"error\\">{$error}</div>";
  // errors here, if any

  elseif(defined(\'REGISTERED_A_USER\'))
    echo \'a email has been sent to \'.REGISTERED_A_USER;
?>

<h2>REGISTER</h2>
<!-- REGISTER FORM -->
<form method="post" id="register-form" action="<?php echo add_query_arg(\'do\', \'register\'); ?>">

<!-- CHOOSE ACCOUNT TYPE AKA USER ROLE -->
<h4>Choose Account Type</h4>
<select name="account_type" class="form-control">
<option value="agent">Agent</option>
<option value="broker">Broker</option>
</select>

<!-- ENTER ACCOUNT DETAILS -->
<h4>Account Details</h4>

<input type="text" name="email" class="form-control" value="" placeholder="Email" />

<input type="text" name="user" class="form-control" value="" placeholder="Username"/>

<input type="text" name="pass1" class="form-control" value="" placeholder="Password" />

<input type="text" name="pass2" class="form-control" value="" placeholder="Confirm Password" />

Delete this text
<input type="text" name="spam" class="form-control" value="spam_protection" />

<!-- REGISTER BUTTON -->
<input type="submit" value="REGISTER" />

</form>

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

$user\\u data的密码数组键不正确。这是必须的user_pass 而不是user_password. 更多参考请查看wp_insert_user()

结束

相关推荐

为什么wp_users表中的USER_PASS列是varchar(64)

在处理项目时,我发现“wp\\u users”表中的“user\\u pass”列是varchar(64)。WordPress总是将用户密码存储在md5中,md5是一个32字符的ASCII字符串。那么,为什么不将其存储在具有ascii排序规则的char(32)中呢。我这样问是因为我正在处理一个存储用户密码的表。使用varchar(64)还有其他好处吗。