Hacer login de usuarios con PHP y MySQL

Un sistema de registro y reconocimiento de usuarios es utilizado para garantizar el acceso a ciertas áreas de nuestro sitio Web.

Debemos de crear una tabla que vamos a utilizar en la base de datos MySQL.

 

MySQL:
  1. CREATE TABLE `usuarios` (
  2.   `id` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `usuario` VARCHAR(20) NOT NULL,
  4.   `password` VARCHAR(10) NOT NULL,
  5.   `descripcion` TEXT character SET utf8 collate utf8_spanish_ci,
  6.   `email` VARCHAR(45) character SET utf8 collate utf8_spanish_ci DEFAULT NULL,
  7.   `fecha` DATE NOT NULL,
  8.   PRIMARY KEY  (`id`)
  9. )

 

 

Ya tenemos la estructura de nuestra tabla de usuarios.

Ahora una pagina index.php donde colocaremos el siguiente código:

 

 

PHP:
  1. <?php
  2.  
  3. echo 'Bienvenido, ';
  4.  
  5. if (isset($_SESSION['k_username'])) {
  6.     echo '<b>'.$_SESSION['k_username'].'</b>.';
  7.     echo '<p><a href="logout.php">Logout</a></p>';
  8. }else{
  9.     echo '<p><a href="login.php">Login</a></p>
  10.      <p><a href="registrar.php">Registrar</a></p>';
  11. }
  12. ?>

 

 

Ahora el formulario para hacer login.php

 

 

HTML:
  1. <form action="validar_usuario.php" method="post">
  2. Usuario:<input type="text" name="usuario" size="20" maxlength="20" />
  3. <br />
  4. Password:<input type="password" name="password" size="10" maxlength="10" />
  5. <br />
  6. <input type="submit" value="Ingresar" />
  7. </form>

 

 

Seguimos con el archivo validar_usuario.php el cual verificará los datos del archivo login.php

 

 

PHP:
  1. <?php
  2.  
  3. //datos para establecer la conexion con la base de mysql.
  4. mysql_connect('localhost','usuario','password')or die ('Ha fallado la conexi&oacute;n: '.mysql_error());
  5. mysql_select_db('mi_base')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
  6.  
  7. function quitar($mensaje)
  8. {
  9.     $nopermitidos = array("'",'\\','<','>',"\"");
  10.     $mensaje = str_replace($nopermitidos, "", $mensaje);
  11.     return $mensaje;
  12. }     
  13.  
  14. if(trim($HTTP_POST_VARS["usuario"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
  15. {
  16.     // Puedes utilizar la funcion para eliminar algun caracter en especifico
  17.     //$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
  18.     //$password = $HTTP_POST_VARS["password"];
  19.    
  20.     // o puedes convertir los a su entidad HTML aplicable con htmlentities
  21.     $usuario = strtolower(htmlentities($HTTP_POST_VARS["usuario"], ENT_QUOTES));   
  22.     $password = $HTTP_POST_VARS["password"];
  23.      
  24.  
  25.     $result = mysql_query('SELECT password, usuario FROM usuarios WHERE usuario=\''.$usuario.'\'');
  26.     if($row = mysql_fetch_array($result)){
  27.         if($row["password"] == $password){
  28.  
  29.             $_SESSION["k_username"] = $row['usuario'];
  30.            
  31.             echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
  32.             echo '<a href="index.php">Index</a></p>';
  33.            
  34.             //Elimina el siguiente comentario si quieres que re-dirigir autom&aacute;ticamente a index.php
  35.            
  36.             /*Ingreso exitoso, ahora sera dirigido a la pagina principal.
  37.             <SCRIPT LANGUAGE="javascript">
  38.             location.href = "index.php";
  39.             </SCRIPT>*/
  40.  
  41.         }else{
  42.             echo 'Password incorrecto';
  43.         }
  44.     }else{
  45.         echo 'Usuario no existente en la base de datos';
  46.     }
  47.     mysql_free_result($result);
  48. }else{
  49.     echo 'Debe especificar un usuario y password';
  50. }
  51. ?>

 

 

El archivo registrar.php, ahí crearemos un usuario nuevo.

 

 

PHP:
  1. <?php
  2.  
  3. //datos para establecer la conexion con la base de mysql.
  4. mysql_connect('localhost','usuario','password')or die ('Ha fallado la conexi&oacute;n: '.mysql_error());
  5. mysql_select_db('mi_base')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
  6.  
  7. function formRegistro(){
  8. ?>
  9. <form action="registrar.php" method="post">
  10. Usuario (max 20):
  11.   <input type="text" name="username" size="20" maxlength="20" /><br />
  12. Password (max 10):
  13. <input type="password" name="password" size="10" maxlength="10" />
  14. Confirma: <input type="password" name="password2" size="10" maxlength="10" /><br />
  15. Email (max 40):
  16. <input type="text" name="email" size="20" maxlength="40" /><br />
  17. <input type="submit" value="Registrar" />
  18. </form>
  19. <?php
  20. }
  21.  
  22. // verificamos si se han enviado ya las variables necesarias.
  23. if (isset($_POST["username"])) {
  24.     $username = $_POST["username"];
  25.     $password = $_POST["password"];
  26.     $password2 = $_POST["password2"];
  27.     $email = $_POST["email"];
  28.     // Hay campos en blanco
  29.     if($username==NULL|$password==NULL|$password2==NULL|$email==NULL) {
  30.         echo "un campo est&aacute; vacio.";
  31.         formRegistro();
  32.     }else{
  33.         // ¿Coinciden las contrase&ntilde;as?
  34.         if($password!=$password2) {
  35.             echo "Las contrase&ntilde;as no coinciden";
  36.             formRegistro();
  37.         }else{
  38.             // Comprobamos si el nombre de usuario o la cuenta de correo ya exist&iacute;an
  39.             $checkuser = mysql_query("SELECT usuario FROM usuarios WHERE usuario='$username'");
  40.             $username_exist = mysql_num_rows($checkuser);
  41.            
  42.             $checkemail = mysql_query("SELECT email FROM usuarios WHERE email='$email'");
  43.             $email_exist = mysql_num_rows($checkemail);
  44.    
  45.             if ($email_exist>0|$username_exist>0) {
  46.                 echo "El nombre de usuario o la cuenta de correo estan ya en uso";
  47.                 formRegistro();
  48.             }else{
  49.                 $query = 'INSERT INTO usuarios (usuario, password, email, fecha)
  50.                 VALUES (\''.$username.'\',\''.$password.'\',\''.$email.'\',\''.date("Y-m-d").'\')';
  51.                
  52.                 mysql_query($query) or die(mysql_error());
  53.                 echo 'El usuario '.$username.' ha sido registrado de manera satisfactoria.<br />';
  54.                 echo 'Ahora puede entrar ingresando su usuario y su password <br />';
  55.                 ?>
  56.                 <FORM ACTION="validar_usuario.php" METHOD="post">
  57.                   Usuario : <INPUT TYPE="text" NAME="usuario" SIZE=20 MAXLENGTH=20><br />
  58.                   Password: <INPUT TYPE="password" NAME="password" SIZE=10 MAXLENGTH=20><br />
  59.                   <INPUT TYPE="submit" VALUE="Ingresar">
  60.                 </FORM>
  61.                 <?php
  62.                
  63.             }
  64.         }
  65.     }
  66. }else{
  67.     formRegistro();
  68. }
  69. ?>

 

Finalmente el archivo logout.php, ahí cerraremos la sesión.

 

PHP:
  1. <?php
  2. // Borramos toda la sesion
  3. echo 'Ha terminado la session <p><a href="index.php">index</a></p>';
  4. ?>
  5. <SCRIPT LANGUAGE="javascript">
  6. location.href = "index.php";
  7. </SCRIPT>

 

El sistema creado es sencillo para que sea fácil de entender, Y no olvides dejar tus comentarios.

floppy.jpg
Clic para descargar el archivo

Actualizaci&oacte;n: debido a los problemas que hay al momento de hacer copy/paste se anexan los archivos del ejemplo. Recuerda que es solo el principio, falta:

Encriptar las claves antes de enviarlas, hacer la conexión como función y todo lo que se te ocurra o puedas aportar.

 

43 Responses to “Hacer login de usuarios con PHP y MySQL”

Páginas: [5] 4 3 2 1 » Mostrar todos

  1. 43
    iskaskun Says:

    Gracias por tu página, me ha sido de mucha ayuda!

  2. 42
    Patricio Asencio Says:

    Webmaster, te puedo dejar mi correo(patricio.asencio@gmail.com) para que me ayudes por favor ya que tengo un solo rollo con todo esto.
    Se te agradece. Puedes borrar el ultimo comentario que puse, coloque solo leceras.

    Gracias

  3. 41
    Patricio Asencio Says:

    ?
    Al parecer no copio el codigo

    SPL - Sindicato de Pilotos LAN

    <!–
    #barra {
    position:absolute;
    left:35px;

Páginas: [5] 4 3 2 1 » Mostrar todos

Leave a Reply