Cómo permitir que el usuario establezca su contraseña en el registro
9 sept 2012, 03:43:27
Vistas: 14.7K
Votos: 5
Estoy trabajando en un formulario de registro frontend y he logrado que funcione el formulario estándar, pero... me gustaría añadir la opción de permitir que el usuario elija su propia contraseña.
Soy algo novato en esto, ¿alguien podría ayudarme? :)
Aquí está mi código hasta ahora:
<?php if(!is_user_logged_in()) { ?>
<?php
if(get_option('users_can_register')) {
//Comprobar si el administrador ha habilitado el registro de usuarios
?>
<?php
if($_POST){
//Escapamos todas las entradas SQL
$username = $wpdb->escape($_REQUEST['username']);
if(empty($username)) {
echo "<span style='color:#FF0000'><strong>Error..</strong></span><br /><br />Debes rellenar el nombre de usuario.";
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 />Por favor usa una dirección de email válida.";
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>Error..</strong></span><br /><br />El nombre de usuario ya existe. Por favor prueba con otro.";
else {
$from = get_option('admin_email');
$headers = 'From: '.$from . "\r\n";
$subject = "¡Registro completado!";
$msg = "Bienvenido, ahora estás registrado. Aquí están tus credenciales:\n\nUsuario: $username\nContraseña: $random_password";
wp_mail( $email, $subject, $msg, $headers );
echo "<strong>Ahora estás registrado. Se ha enviado un email con tu nombre de usuario y contraseña..";
}
exit();
}
else
{
//Insertamos el formulario de registro y el javascript aquí
?>
<div id="result"></div>
<div style="padding-top:5px; padding-bottom:10px;">Rellena tus datos para registrarte.</div>
<form id="wp_signup_form" action="" method="post">
<input type="text" name="username" style="width:250px; margin-bottom:3px;" placeholder="Usuario"><br />
<input type="text" name="email" placeholder="Email" style="width:250px; margin-bottom:3px;"><br />
<input type="submit" id="submitbtn" name="submit" value="Registrarse" 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
// formulario insertado
}
?>
<?php
}
else
?>
<!-- fin del formulario de registro -->
<br />
¿Ya estás registrado? Inicia sesión en tu cuenta con el formulario de la barra lateral.
<?php } else { ?>
Ya has iniciado sesión...
<?php } ?>

Demilio
883
Todas las respuestas a la pregunta
2
4
No es tan difícil como piensas :)
Añade los campos de contraseña a tu formulario:
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 />
Luego en tu if($_POST){
reemplaza esta línea:
$random_password = wp_generate_password( 12, false );
con esto:
$pass1 = $wpdb->escape($_REQUEST['pass1']);
$pass2 = $wpdb->escape($_REQUEST['pass2']);
if ($pass1 != $pass2){
echo "<span style='color:#FF0000'><strong>Error..</strong></span><br /><br />Las contraseñas no coinciden.";
exit();
}
$random_password = $pass1;

Bainternet
67.7K
9 sept 2012 11:34:18
0
Ten en cuenta que puedes usar la función interna de WordPress para verificar el campo de correo electrónico. Consulta este enlace is_email
$email = $wpdb->escape($_REQUEST['email']);
if( !is_email($email) ) {
echo "<span style='color:#FF0000'><strong>Error..</strong></span><br /><br />por favor usa una dirección de correo válida.";
exit();
}
Publicado como respuesta debido a poca reputación.

Hector
682
9 nov 2015 12:28:16
Preguntas relacionadas
7
respuestas
4
respuestas
4
respuestas
5
respuestas