Registro y login de usuarios con PHP y MySQL (III)

Hace ya un tiempo empecé una serie de tutoriales para crear un sistema de registro y login de usuarios (1 y 2) y creo que va siendo hora de continuar con el.

registro de usuarios registrados

Continuaremos el tutorial con la parte que concierne al login de los usuarios que ya están registrados para, en el siguiente capítulo, mostrar una zona para el usuario ya logueado con sus datos.

En el anterior capítulo de este tutorial os mostré como hacer el formulario de registro y el código de validación y registro en el mismo archivo. En este caso lo haremos en dos archivos para que veáis que no es complicado.

Empezamos con el formulario creando un archivo login.php:

<form action="vlogin.php" method="post">Nick: <input class="nick" type="text" name="nick" />
Contraseña: <input class="pass" type="password" name="pswd" />
<input class="logentry" type="submit" name="enviar" value="Entrar" /></form>

Como veis el formulario no tiene gran complicación, simplemente añadimos en el action del form la dirección al archivo que validará los datos.

Ahora vamos con el archivo para la validación de los datos introducidos en el formulario. Creamos un archivo, vlogin.php, y empezamos conectando con la base de datos:

// Host al que conectar, habitualmente es el ‘localhost’, usuario y contraseña
$conexion = mysql_connect("localhost", "usuario", "clave");
// Nombre de la Base de Datos que se desea utilizar
mysql_select_db("usuarios", $conexion);

El nombre de la base de datos usado para este tutorial es usuarios.

Ahora toca el código para validar los datos. con esto haremos que se comparen los datos de nick y contraseña introducidos en el formulario con la base de datos: si existen el usuario está registrado y avanzará a la siguiente página. Si, por el contrario, no existen esto puede deberse a dos cosas: que realmente no esté registrado o que se haya confundido al meter los datos. Si se da alguno de estos dos casos se le devolverá al formulario.

    if(empty($_SESSION['nick'])) { // comprobamos que las variables de sesion esten vacias  
        if(isset($_POST['enviar'])) { // comprobamos que se hayan enviado los datos del formulario 
            // comprobamos que los campos nick y contraseña no esten vacíos 
            if(empty($_POST['nick']) || empty($_POST['pswd'])) { 
                echo "El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>"; 
            }else { 
                // "limpiamos" los campos de nick y pass de posibles códigos maliciosos 
            	$nick = mysql_real_escape_string($_POST['nick']);
            	$pass = mysql_real_escape_string($_POST['pswd']); 
                $pass = md5($pass); 
                // comprobamos que los datos ingresados en el formulario coincidan con los de la BD
				$sql = mysql_query("SELECT iduser, nom, ape, nick, pswd, email FROM users WHERE nick='".$nick."' AND pswd='".$pswd."'");
                if($fila = mysql_fetch_array($sql)) {
					// creamos las sesiones de usuario
                    $_SESSION['iduser']=$fila['iduser'];
                    $_SESSION['nick']=$fila["nick"];
					$_SESSION['nom']=$fila["nom"];
					$_SESSION['ape']=$fila["ape"];
					$_SESSION['email']=$fila["email"];
					$nick=$_SESSION['nick'];
					echo"
                    <script type='text/javascript'> 
                        var pagina = 'user.php?$nick'; 
                        function redireccionar() { 
                            location.href = pagina 
                        } 
                        setTimeout ('redireccionar()', 1000); 
                    </script>"; 
 
                }else { 
                    echo "Los datos ingresados no están registrados en nuestra BD. <a href='javascript:history.back();'>Reintentar</a>"; 
                } 
            }
		}else { 
			// si las variables de sesión no están vacías redirigimos al index (o a la página que se desee) 
			echo "<script type='text/javascript'>location.href='user.php?nick=".$_SESSION['nick']."'</script>";
    	} 
    }

Cuando los datos del usuario son correctos el código hace que el usuario sea enviado a una página “personal” a la que llamaremos user.php. Esto lo podemos ver en la parte final del código: user.php?nick= siendo la misma página para todos los usuarios pero mostrando los datos según el usuario ya que lo filtramos con ?nick. Esto lo veremos en la siguiente parte de este tutorial. Si tenéis alguna duda dejarla en los comentarios e intentaré responderla lo antes posible.

Autor: rogeliorabbit

Administrador de Servidores y Páginas Web actualmente sin trabajo. Me interesa la programación, PHP, diseño web, WordPress, Android … Puedes encontrarme en Google+ o en Twitter

Deja un comentario

Loading Facebook Comments ...
Loading Disqus Comments ...

No Trackbacks.