如何让用户在注册时设置密码

时间:2012-09-09 作者:Demilio

我正在准备一份前端登记表,而且我已经尽可能让标准登记表正常工作了,但是。。。我想添加一个机会,让用户选择自己的密码。

我对此有点不知所措,有人能帮我吗?:)

以下是我目前的代码:

<?php if(!is_user_logged_in()) { ?>


<?php
if(get_option(\'users_can_register\')) {
//Check whether user registration is enabled by the administrator
?>

<?php

if($_POST){
    //We shall SQL escape all inputs
    $username = $wpdb->escape($_REQUEST[\'username\']);
    if(empty($username)) {
        echo "<span style=\'color:#FF0000\'><strong>Error..</strong></span><br /><br />You have to fill in the username.";
        exit();
    }
    $email = $wpdb->escape($_REQUEST[\'email\']);
    if(!preg_match("/^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,4})$/", $email)) {
        echo "<span style=\'color:#FF0000\'><strong>Error..</strong></span><br /><br />please use a calid e-mailadress.";
        exit();
    }

    $random_password = wp_generate_password( 12, false );
    $status = wp_create_user( $username, $random_password, $email );
    if ( is_wp_error($status) )
        echo "<span style=\'color:#FF0000\'><strong>Feil..</strong></span><br /><br />Username allready exist. please try another one.";
    else {
        $from = get_option(\'admin_email\');
        $headers = \'From: \'.$from . "\\r\\n";
        $subject = "Registration ok!";
        $msg = "Welcome, you are now registered. Here is your username and password.\\Info:\\Username: $username\\Password: $random_password";
        wp_mail( $email, $subject, $msg, $headers );
        echo "<strong>You are now registered. An e-mail is now sent to you with your username and password..";
    }

    exit();

}
 else
{
//Embed the register form and javascript here

?>


<div id="result"></div>
<div style="padding-top:5px; padding-bottom:10px;">Fill in your info to register.</div>

<form id="wp_signup_form" action="" method="post">
<input type="text" name="username" style="width:250px; margin-bottom:3px;" placeholder="Username"><br />
<input type="text" name="email" placeholder="E-mail" style="width:250px; margin-bottom:3px;"><br />
<input type="submit" id="submitbtn" name="submit" value="Register" class="knapp" style="padding:8px;">
</form>
<script type="text/javascript">                         
$("#submitbtn").click(function() {
$(\'#result\').html(\'<img src="<?php bloginfo(\'template_url\'); ?>/images/loader.gif" class="loader" />\').fadeIn();
var input_data = $(\'#wp_signup_form\').serialize();
$.ajax({
type: "POST",
url:  "<?php echo "http://" . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\']; ?>",
data: input_data,
success: function(msg){
$(\'.loader\').remove();
$(\'
<div>\').html(msg).appendTo(\'div#result\').hide().fadeIn(\'slow\');
}
});
return false;

});
</script>
<?php
// embedded

}
?>

<?php
    }

else 
?>

<!-- regskjema end -->
<br />
Allready registered? Login to your account with the form in the sidebar.
<?php } else { ?>
You are allready logged in...
<?php } ?>

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

它不像你想象的那么难:)

将密码字段添加到表单中:

password: <input type="password" name="pass1" style="width:250px; margin-bottom:3px;"><br />
repeat password: <input type="password" name="pass2" style="width:250px; margin-bottom:3px;"><br />
然后在你的if($_POST){ 替换此行:

$random_password = wp_generate_password( 12, false );
使用此选项:

$pass1 = $wpdb->escape($_REQUEST[\'pass1\']);
$pass2 = $wpdb->escape($_REQUEST[\'pass2\']);
if ($pass1 != $pass2){
    echo "<span style=\'color:#FF0000\'><strong>Error..</strong></span><br /><br />please use a passwords don\'t match.";
        exit();

}
$random_password = $pass1;

SO网友:Hector

请注意,您可以使用内部WordPress功能检查电子邮件字段。检查此链接is_email

$email = $wpdb->escape($_REQUEST[\'email\']);
if( !is_email($email) ) {
    echo "<span style=\'color:#FF0000\'><strong>Error..</strong></span><br /><br />please use a calid e-mailadress.";
    exit();
}
由于声誉不佳,发布为答案。

结束

相关推荐

Menu page with list of users

我需要一种方法来创建一个菜单页面,其中包含所有用户的列表,以便于管理。该列表将由无权访问“用户”菜单页的用户使用。页面需要有每个用户的用户ID、名称、注册日期、昵称、用户级别和用户角色你知道如何做到这一点吗?欢迎任何参考文档或教程。