viernes, 12 de julio de 2013

Hacer login con PHP y MySql


Pasos para crear un login con PHP y MySql:
Te puede interesar: Como tener un servidor web con apache y MySql  Es sobre esta herramienta que normalmente monto alguns pequeños proyectos.

  • Crear una base de datos.

Recomiendo que antes de programar, si hemos de utilizar bases de datos, sea éste el primero paso, debemos dedicar el tiempo suficiente en este paso, porque de la base de datos de un sistema depende su correcto funcionamiento, de nada me serviría tener un diseño espectacular pero si mi base de datos está mala. Ahora manos a la obra.

Nombre de la base de datos: db_blog.
Campos de la tabla administradores:


I
Si prefieres ejecutar una consulta MySql:



CREATE TABLE  `administradores` 
(
 `id_administrador` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
 `nombre_administrador` VARCHAR( 60 ) NOT NULL ,
 `password` VARCHAR( 60 ) NOT NULL
) ENGINE = INNODB;





IMPORTANTE:
Es muy probable que el código genere a muchos algunos errores, esto posiblemente se deba a que no he utilizado la apertura del código php como se debe en todos los casos. Lo correcto es <?php, pero como repito algunas omito eso y solamente lo hago así: <? 
Algunas versiones de php pueden leer esto sin problema, pero es mejor hacerlo como lo mencione al principio. 
Si deseas aprender mas sobre esto, acá dejo un link de cristalab que lo explica muy bien
!Suerte!
  • login.php

Ahora que tenemos lista nuestra base de datos con la respectiva tabla comenzaremos a diseñar nuestro login, crearemos un archivo php que lo llamaremos login.php



<form action="validar_usuario.php" method="post">
 <table>
  <tr>
   <td>Usuario:</td>
   <td><input name="admin" required="required" type="text"/>
   </td>
  </tr>
  <tr>
   <td>Password:</td>
   <td>
    <input name="password_usuario" required="required" type="password"/>
   </td> 
  </tr>
  <tr>
   <td colspan="2">
    <input name="iniciar" type="submit" value="Iniciar Sesión" />
   </td>
  </tr>
</table>
</form>

  • Validar_usuario.php


una vez creado el archivo login.php, crearemos un nuevo archivo validar_usuario.php que es el cual no ayudará precisamente como su nombre lo indica, validar los datos introducidos en el formularios, Nota: El siguiente código está comentado(texto color verde) dando la explicación de cada parte importante sobre su funcionamiento".
<?php
/****************************************
**establecemos conexion con el servidor.
**nombre del servidor: localhost.
**Nombre de usuario: root.
**Contraseña de usuario: root.
**Si la conexion fallara mandamos un msj 'ha fallado la conexion'**/
mysql_connect('localhost','root','root')or die ('Ha fallado la conexión: '.mysql_error());

/*Luego hacemos la conexión a la base de datos. 
**De igual manera mandamos un msj si hay algun error*/
mysql_select_db('db_blog')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
 
/*caturamos nuestros datos que fueron enviados desde el formulario mediante el metodo POST
**y los almacenamos en variables.*/
$usuario = $_POST["admin"];   
$password = $_POST["password_usuario"];

/*Consulta de mysql con la que indicamos que necesitamos que seleccione
**solo los campos que tenga como nombre_administrador el que el formulario
**le ha enviado*/
$result = mysql_query("SELECT * FROM administradores WHERE nombre_administrador = '$usuario'");

//Validamos si el nombre del administrador existe en la base de datos o es correcto
if($row = mysql_fetch_array($result))
{     
//Si el usuario es correcto ahora validamos su contraseña
 if($row["password"] == $password)
 {
  //Creamos sesión
  session_start();  
  //Almacenamos el nombre de usuario en una variable de sesión usuario
  $_SESSION['usuario'] = $usuario;  
  //Redireccionamos a la pagina: index.php
  header("Location: index.php");  
 }
 else
 {
  //En caso que la contraseña sea incorrecta enviamos un msj y redireccionamos a login.php
  ?>
   <script languaje="javascript">
    alert("Contraseña Incorrecta");
    location.href = "login.php";
   </script>
  <?
            
 }
}
else
{
 //en caso que el nombre de administrador es incorrecto enviamos un msj y redireccionamos a login.php
?>
 <script languaje="javascript">
  alert("El nombre de usuario es incorrecto!");
  location.href = "login.html";
 </script>
<?   
        
}

//Mysql_free_result() se usa para liberar la memoria empleada al realizar una consulta
mysql_free_result($result);

/*Mysql_close() se usa para cerrar la conexión a la Base de datos y es 
**necesario hacerlo para no sobrecargar al servidor, bueno en el caso de
**programar una aplicación que tendrá muchas visitas ;) .*/
mysql_close();
?>


  • Index.php:

Ahora necesitamos crear otro archivo que llamaremos index.php a la cual ingresaremos cuando hagamos un login correcto, imprimiremos un mensaje sencillo.
<?php
//creamos la sesión
session_start();
//validamos si se ha hecho o no el inicio de sesión correctamente
//si no se ha hecho la sesión nos regresará a login.php
if(!isset($_SESSION['usuario'])) 
{
  header('Location: login.php'); 
  exit();
}
 ?>
  <h1>BIENVENIDO</h1>
  <a href="logout.php">Cerrar Sesión</a>
 <?
?>



  • Logout.php:

Este archivo servirá para terminar la sesión.
<?php 
 //Crear sesión
 session_start();
 //Vaciar sesión
 $_SESSION = array();
 //Destruir Sesión
 session_destroy();
 //Redireccionar a login.php
 header("location: login.php");
?>

Bueno, espero de algo pueda servir este "how to" Dejo el link de descarga de la aplicación completa con el script sql, gracias por visitar mi blog.

14 comentarios:

Jiizus dijo...

Hey! Gracias, me sirvió mucho de verdad que es lo mejor que he podido ver y es muy fácil... Te recomendaré con los de mi clase Gracias Gracias Gracias!

Anónimo dijo...

Ala mano mejor explicado no puede estar, esta excelentisimo cabal lo que andaba buscando, buenisima onda.

Saludos desde Guatemala

Unknown dijo...

Donde busca el archivo "validar_usuario.php" la password del usuario (en este caso un admin)? Lo de el nombre del admin perfecto, haciendo query a la base de datos. Pero la password? Matizame un poco esto por favor.

Anónimo dijo...

Muchas gracias!! Estoy dando mis primeros pasos en php y realmente me diste una gran ayuda!
La duda es, si lo que necesito es que un usuario, ya registrado, acceda a un formulario que se envia por correo, qué campos debe incluir dicho formulario? O sea, un formulario que así ingreses la direccion url no te permita acceder si no estás registrado.
Gracias!!

Jorge dijo...

Me funciono super bien, gracias.

Unknown dijo...

Un ejemplo muy justo. Me ha sido muy útil, Gracias.

Unknown dijo...

muy bueno

Unknown dijo...

Tengo problemas al clicar en el login (funcionando unicamente con usuario registrado) y me lleva a validar_usuario.php donde me sale una página en blanco y no me redirecciona al index.php como hace el header("Location: index.php"); ...Espero soluciones, gracias y un saludo.

chilenocalerano dijo...

muy bueno pero falto la pagina register para crear usuarios administradores o de solo consulta

Unknown dijo...

Hola, antes que nada gracias, sólo que me aparece un error, a la hora entrar sin registro a la pagina index no me regresa al login, espero me puedas ayudar, gracias

Anónimo dijo...

;)

Joselyn Fernandez dijo...

q

Anónimo dijo...

funciona perfectamente?

Anónimo dijo...

no corre