Registro de usuarios con jQuery, Ajax y PHP

En este artículo vamos a describir con detalle como realizar un formulario de registro de datos validado mediante jQuery y procesado con Ajax y PHP.

Vamos a tratar un ejemplo sencillo  de registro de usuarios en el que solo vamos a guardar el nombre de usuario, su contraseña y la fecha de registro.

Como siempre que vamos a trabajar con jQuery, lo primero que deberemos hacer es incluir sus librerías y css en el <head> de nuestra página.

<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.6.min.js"></script>

También en el <head> deberemos incluir el código jQuery y Ajax que se encargará de validar los campos del formulario y de procesar esos datos.

<script type="text/javascript">

$(document).ready(function() {

	$('.error').hide();

	$("#enviar-btn").click(function() {

		//Obtenemos el valor del campo nombre
		var name = $("input#name").val();

		//Validamos el campo nombre, simplemente miramos que no esté vacío
		if (name == "") {
			$("label#name_error").show();
			$("input#name").focus();
			return false;
		}

		//Obtenemos el valor del campo password
		var password = $("input#password").val();

		//Validamos el campo password, simplemente miramos que no esté vacío
		if (password == "") {
			$("label#pass_error").show();
			$("input#password").focus();
			return false;
		}

		//Construimos la variable que se guardará en el data del Ajax para pasar al archivo php que procesará los datos
		var dataString = 'name=' + name + '&password=' + password;

		$.ajax({
			type: "POST",
			url: "register.php",
			data: dataString,
			success: function() {
		    	$('#register_form').html("<div id='message'></div>");
		        $('#message').html("<h2>Tus datos han sido guardados correctamente!</h2>")
		        .hide()
		        .fadeIn(1500, function() {
					$('#message').append("<a href='index.php?action=see'>Ver usuarios registrados</a>");
		        });
		    }
		});
		return false;
	});
});

runOnLoad(function(){
	$("input#name").select().focus();
});
</script>

Al hacer click en el botón con id=»enviar-btn» se procesa el código anterior que se encaraga de validar el nombre de usuario y contraseña mirando que no estén vacíos y luego envía esos datos al archivo «register.php» mediante la técnica Ajax.

El archivo PHP se encarga de coger el nombre de usuario y contraseña introducidos y guardarlos en la base de datos de la siguiente forma:

<?php
$name = utf8_decode($_POST['name']);
$password = md5($_POST['password']);

//Para la conexión deberás introducir el usuario y password de tu base de datos
$con = mysql_connect('localhost', 'usuario', 'password');
mysql_select_db("tu_base_de_datos", $con);

$insert = "INSERT INTO tu_tabla (name, password, date_add) VALUES ('$name', '$password', now())";
mysql_query($insert);
?>

Como vemos el archivo PHP recoge los datos del formulario mediante POST, conecta a la base de datos e inserta los valores en un nuevo registro.

Para el campo nombre utilizamos la función utf8_decode() para asegurarnos de que los acentos y carácteres especiales se guardarán de forma correcta en la base de datos.

Y el campo password lo guardamos encriptado con la función md5() de PHP por cuestiones de seguridad.

Ahora solo falta que en el <body> pongamos el siguiente formulario:

<div id="register_form">
	<form name="register" method="post" action="">
		<label for="nombre">Nombre:</label>
		<input type="text" id="name" name="name" />
		<label class="error" for="name" id="name_error">Debe introducir su nombre.</label><br><br>
		<label for="password">Password:</label>
		<input type="password" id="password" name="password" />
		<label class="error" for="pass" id="pass_error">Debe introducir su contrase&ntilde;a.</label><br><br>

		<input name="submit" type="submit" value="enviar" id="enviar-btn" />
	</form>
</div>

Ver ejemplo en funcionamiento

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(16 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

24 respuestas a “Registro de usuarios con jQuery, Ajax y PHP”

  1. Jorge dice:

    Hola, estoy tratando de montar el registro pero como conecto con la base de datos, tengo que crear un usuario para la base que diste en tu ejemplo, saludos

  2. luis dice:

    Excelente gracias , era lo que necesitaba , me funciono perfecto

  3. Sergio dice:

    hola esta muy padre tu ejemplo fíjate que estoy aprendiendo me puedes enviar este ejemplo tal cual lo tienes en Ver ejemplo en funcionamiento

    Saludos

  4. Hector WK dice:

    buenos dias amigo, queria hacerte una pequeña pregunta en tu codigo declaras una funcion runOnLoad la cual si ejecuto mi depurador me dice que no esta definida, mas sin embargo el codigo funciona no tiene problemas pero quiero saber donde tu declaras esta funcion, porque revise los externos y me baje la misma version de los js y nada, espero que me ayudes gracias amigo.

  5. alexander dice:

    beunas noches jose, gracias por los aportes que nos das de verdad son de gran ayuda. te escribo por que quisiera q me orientaras en lo siguiente. utilizando ajx php y mysql… necesito verificar en un formulario si el usuario existe….. introduzco el codigo del usuario y si existe automaticamente se llenen los input con las consulta hecha en la base de datos… el evento lo llamaria desde el input «codigo» con la opcionn «onbluir»

    • Jose Aguilar dice:

      Hola que tal,

      Si, lo que comentas se puede hacer y te podría servir de base al menos la llamada ajax de este tutorial pero tendrás que cambiar o adaptar bastaten tu archivo php para que cumpla con el objetivo de retornar la información del usuario introducido.

      En tu caso, en el evento onblur, hacer la llamada ajax y en el php adaptarlo con lo que te comento.

      Saludos

  6. andresdavid dice:

    Gracias… Pero sera posible que me ayudes con que no puedas haber dos usuarios con el mismo nick o pass gracias

    • Jose Aguilar dice:

      mmm, creo que tendrás que hacer un ajax que te consulte si el email introducido ya existe y retorne un 0 o un 1 para que en el success del ajax puedas hacer una cosa u otra, es decir, continuar el registro o mostrar un alerta de email ya registrado.

  7. Animal dice:

    Hola,
    Todo perfecto,
    pero me gustaria saber como tendria que hacer para comprobar si el usuario se registro anteriormente.
    Gracias.

    • Jose Aguilar dice:

      Hola,

      Antes de insertar el usuario deberías hacer una consulta a la base de datos que checkee si el usuario existe. Hacer un condicional si no existe insertar

      Saludos

  8. rvaldenegro dice:

    Estimado, gracias por tu guia, me resultó útil para poder insertar un registro, pero que pasa cuando tengo que insertar distintos registros con distintos botones, te mando el link de una captura que lo que intento hacer… http://www.subirimagenes.net/i/140713012515302405.png
    Me guarda solo la primera fila completa al presionar el boton de la primera fila, si trato de guardar el registro de la segunda fila, con el boton de la segunda fila no pasa nada, agradecería que pudieras ayudarme u orientarme al respecto, saludos.

  9. jess dice:

    Hola en esta linea

    en el class error que es lo que lleva en estilo

  10. alguien dice:

    Donde veo la consulta a la base de datos?
    veo la inserción de los datos pero en que punto se hace la consulta?
    para listar todos los datos.

  11. jesus uribe dice:

    Muy buen ejemplo . sabes que estoy aprendiendo todo este tema y la duda que tengo es saber diferenciar las variables de los nombres de los textbox y se me complica un poco por que tienen el mismo nombre
    pro ejemplo esta linea
    var dataString = \’name=\’ + name + \’&password=\’ + password;

    podrias explicarmela un poco mejor.

    gracias de antemano

    • Jose Aguilar dice:

      En el dataString estamos construyendo una cadena con la información necesaria (name y password).

      name=’ + name +

      La primera parte es el nombre que luego en el archivo php tendremos que recoger mediante post y la segunda parte es la variable javascript que contiene el valor del input id=»name» en este caso.

      Fíjate que en el archivo register.php procesado por ajax recoge los valores asi:

      $name = utf8_decode($_POST[‘name’]);

  12. hiulit dice:

    Hola! Muy buen tutorial 🙂
    Pero una pregunta, como haríamos para validar también desde PHP?
    Porque si el usuario no tiene Javascript..

    Gracias!

  13. i love your blog, i have it in my rss reader and always like new things coming up from it.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ver más sobre