Login seguro PHP con MySQLi: Descargar

Login seguro PHP con MySQLi Descargar

Login seguro PHP con MySQLi. La problemática actual se basa en la seguridad de nuestros sistemas y si observamos las estadísticas son miles de sitios que son violentados por accesos no deseados. Las historias de páginas hackeadas son numerosas en las noticias, los desarrolladores están buscando las mejores maneras de asegurar sus sitios. Sin embargo, los sistemas de login para acceder al sistema son los lugares preferidos por personas mal intencionadas.

Si vuestro sitio tiene un sistema de usuarios o un buscador de noticias, podrías estar en riesgo grave de ser vulnerado y los datos de tus usuarios podrían verse comprometidos severamente. Esta articulo mostrará un intento de hacer un login seguro con PHP. Por lo tanto, podemos haber perdido algunos concejos en nuestro código.

Índice
  1. Login seguro PHP con MySQLi
    1. Cosas que se necesitará para lograr nuestro cometido.
    2. Ejemplo #01 Login de usuario

Login seguro PHP con MySQLi

A continuación, se muestra una lista de posibles ataques que este tutorial intenta opacar contra:

  • Inyecciones SQL
  • Hacking de sesión
  • Escucha de red
  • Cross Siete Scripting
  • Ataques de fuerza bruta
Login PHP con MySQLi
Login PHP con MySQLi

Cosas que se necesitará para lograr nuestro cometido.

Como vamos a usar el conjunto mysqli_ * de clases PHP para acceder a nuestra base de datos MySQL necesitaremos las siguientes versiones de PHP y mySQL.

  • PHP versión 5.3 o posterior
  • MySQL versión 4.1.3 o posterior

Ejemplo #01 Login de usuario

- Crear nuestra base de datos y tablas

CREATE DATABASE IF NOT EXISTS `login` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `login`;
--
-- Estructura de tabla para la tabla `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `user_id` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(50) NOT NULL,
  `email` varchar(60) NOT NULL,
  `password` varchar(60) NOT NULL,
  `social_id` varchar(100) NOT NULL,
  `picture` varchar(250) NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY  (`user_id`),
  KEY `email` (`email`),
  KEY `login` (`password`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

- La conexion con la base de datos y sesiones

<?php 
ob_start();
session_start();
require_once 'config.php'; 
?>
<?php 
    if( !empty( $_POST )){
        try {
            $user_obj = new Cl_User();
            $data = $user_obj->login( $_POST );
            if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']){
                header('Location: home.php');
            }
        } catch (Exception $e) {
            $error = $e->getMessage();
        }
    }
    //print_r($_SESSION);
    if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']){
        header('Location: home.php');
    }
?>
Login seguro php con mysqli
Login seguro php con mysqli

Nota:

Al recibir comentarios acerca del script se optó por actualizar algunas brechas de seguridad.

Bueno, espero que les sirva el código.

Descargar Script Login PHP

Referencia

How-secure

Datatables Dropdown PDO, ServerSide, Responsiva

ServerSide
Responsiva adaptable
Opciones de exportación Dropdown
Mensajes usando SweetAlert2
Acciones (Editar, Agregar, Ver, Eliminar)

  Subir archivos arrastrar y soltar con PHP, jQuery

Si quieres conocer otros artículos parecidos a Login seguro PHP con MySQLi: Descargar puedes visitar la categoría ¿Qué es PHP y cómo funciona?.

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

    43 Comentarios

  1. ERICSON MENDEZ dice:

    No quiere realizar el registro me puede ayudar

  2. Crispin Pantoja dice:

    Al cargar la página de iniciar la sesión con localhost/login me sale el siguiente error:

    Deprecated: __autoload() is deprecated, use spl_autoload_register()
    instead in c:\xampp\htdocs\login\config.php en line 11

    Por que me sale este error al cargar el formulario login que puede ser sr. Tapia Ayudeme por favor mi correo es pantojacrispin@gmail.com

    1. pha dice:

      con esto solucionas el problema

      spl_autoload_register('mi_autoloader');
      function mi_autoloader($class)
      {
      $parts = explode('_', $class);
      $path = implode(DIRECTORY_SEPARATOR,$parts);
      require_once $path . '.php';
      }

  3. crispin pantoja dice:

    Nestor es importante que envíes con cada proyecto como van ordenados y colocados los archivos y programas y las carpetas, ya que he visto en varias personas que no les funciona por las rutas, claro que al no cambiar la ruta no va a funcionar el código.

    En el proyecto de Niveles de Usuarios si colocaste un print de pantalla de como van colocados los archivos. Gracias por compartir tu código soy programador nuevo de php , pero tengo amplia experiencia en otros lenguajes y me funcionó todo bien.

  4. hector dice:

    No funciona el login... Cuando entro lo primero que me dice que hay un error en la linea 10... ¿A que se puede dever?

    1. hector epinoza dice:

      hola yo del pasado se resuelve cambiando la ruta en la cual esta el login puedes ser dominio.com/login o localhost/login

  5. Fran dice:

    Usar los action de los formularios con PHP_SELF implica que alguien te pueda hacer inyection sql.
    Por ejemplo si uso la siguiente dirección de tu script + el siguiente código https://miurl//%22%3E%3Cscript%3Ealert('HOLA')%3C
    /script%3E%3Cfoo%22

    Te abriré un mensaje diciendo HOLA, pero podrían hacer algo mucho más grave.

    Espero le sirvan de ayuda e intentaría corregirlo.
    Un saludo

  6. C, Daniel Rollero dice:

    Hola Nestor.
    Desde Argentina, no puedo realizar pagos a travez de PayPal, por disposiciones del Banco Central.
    Hay algun otro medio en que pueda pagarte para descargar el paquete?
    Muchas gracias!
    D.

  7. Pablo arreguin dice:

    el precio de los 156 programas es en dolares???

    1. Nestor Tapia dice:

      Hola Pablo,

      Si, es en dolares

  8. walter dice:

    Hola disculpa sabes que me tira error en la linea 7 cuando quiero recuperar la contraseña

    1. Nestor Tapia dice:

      Hola walter

      Tienes que probarlo con un servidor de producción con un correo corporativo para que envie los correos.

      Saludos

  9. candy dice:

    Super bien, me funcionó perfecto, gracias!!! 😀

  10. Herza dice:

    Buenas, tengo el mismo problema que Emmanuel. Tengo todos los datos puestos en el archivo de configuración pero al intentar registrar un nuevo usuario o queres hacer login no deja. No muestra ningun error.
    Mi versión de PHP es 7.2, he modificado la función __autoload($class) por spl_autoload_register(); ya que dicha función el php 7.2 ya no existe, pero sigue sin hacer nada.
    Alguna idea de lo que puede estar pasando?
    Gracias y un saludo

    1. andres joya dice:

      amigo estoy igual ayudame porfavor me dice que inserte email valido

  11. emiliano dice:

    Hola te consulto.. el contenido dentro de inicio o la otra opcion, intente agregar diferentes imagenes y se ven todas hasta que se corta y despues no se ven mas, como qeu el contenido visual no se puede agrandar mas para abajo. alguna solucion?

    1. Nestor Tapia dice:

      Hola emiliano.

      Tienes que editar los estilos CSS y manejar la altura del contenedor.
      Con eso podras agregar las imagenes que desees.

      1. andres joya dice:

        amigo trato de registrar un usuario y me dice inserte un email valido sabes que es tengo php 7.0 mi numero 57 3044980985

        1. Nestor Tapia dice:

          Hola Andres,

          Tienes que probarlo en un servidor de producción.
          Verificar la conexion con la base de datos.

          https://clayconexiones.com/distribuidores/login1/register.php

          He accedido y si me permite registrarme.

          Saludos

          1. andres joya dice:

            hola tengo de nuvo el problema se conecta correctamente a mi base de datos pero al tratar de registrar un nuevo usuario no me vota nada, no hace nada el formulario sabes que puede ser.

  12. Emmanuel dice:

    Disculpe, no logro guardar ningun usuario, no muestra ningun mensaje ni de error ni de exito.

    1. Nestor Tapia dice:

      Hola Emmanuel

      Tienes que cumplir algunos requisitos, como tener una base de datos, version PHP 7
      Además, configurar el fichero config.php con las credenciales de MySQL.

      Si continuas teniendo problemas, envíame mas detalles de como estas implementando el script

      1. manuel dice:

        tengo mi base de datos local y productivo, configuro el config todo bien. no tengo ni un error. ingreso manual los datos a la tabla y me dice que el correo ya existe eso quiere decir que la conexion esta bien. pero no logro registrar un usuario de la web.

        1. andres joya dice:

          yo sigo teniendo problemas ayudame

  13. Ciro dice:

    A un logre explotar un vulnerabilidad de código tu codigo solo resuelve un parte mas pero a un si te pueden cerra la session varias veces remotamente.

  14. Alex dice:

    Hola tengo tengo un pequeño problema, al inciar sesion me carga el siguiente mensaje Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\login_seguro_php_mysqli (1)\login\Cl\User.php on line 84
    y 85 que es $data = mysqli_fetch_assoc($result); y el $count = mysqli_num_rows($result); ya habia hecho conexion desde la base de datos y cree el usuario desde ahi tambien, saludos de antemano

  15. Joel dice:

    Hay un grave error, si envías el formulario con el correo o email incorrectos te saldrá el mensaje en rojo, pero algo que se tomo por alto es que si luego de hacer eso vas la pestaña home, se abrirá sin nombre, pasa que se envió el post sin datos y por haber enviado el post cambio a true. creas una session sin datos. No es un login seguro.

    1. Nestor Tapia dice:

      Hola Joel

      Primeramente agradecerte por tu comentario, efectivamente ya lo he revisado y se ha corregido ese inconveniente.

      Un saludo a la distancia.

  16. Marco Rosero dice:

    Buenos dias muchas gracias excelente aporte, justo lo que necesitaba

  17. luis gil dice:

    Buenos días y gracias de antemano.
    Nada más intentar logearme, me aparece el error
    Fatal error: Uncaught Error: Class 'Cl_User' not found in index.php linea 9

  18. PATRICIO dice:

    Estimado Nestor, el inconveniente que tengo, no se activa el Menu de Mi cuenta Y salir en la pagina donde despliego la información, gracias de antemano

  19. PATRICIO dice:

    Estimado Nestor, gracias por tu gran aporte, necesito que al iniciar sesión se envie a otra pagina que esta en otra carpeta dentro del localhost, es un sistema de manejo de información, como puedo acerlo, gracias de antemano por tu ayuda.

    1. Nestor Tapia dice:

      Hola Patricio,

      Solo tienes que llamar a este fichero y darle la ruta correcta si lo deseas en otra carpeta

      Con esta declaración en la parte superior ya el fichero tendria sesion de usuario.

      Espero haberte ayudado, un saludo a la distancia.

      1. PATRICIO dice:

        Gracias Nestor por tu ayuda, el inconveniente que tengo es el siguiente: en la pagina donde despliego toda la información no se activa el Menu de Mi cuenta y Salir.. por fa puedes enviarme tu direccion de correo para adjuntarte screen del problema, gracias de antemano.

  20. Claudio dice:

    hola!! gracias por compartir, con que usuario me logueo. gracias

    1. Nestor Tapia dice:

      Saludos Claudio,

      El sistema login seguro no tiene usuarios, si lo has instalado y vinculado con la base de datos correctamente, tienes que crear el usuario en el vinculo registrarse.

      Espero haberte ayudado, que tengas un excelente día.

  21. José dice:

    Todo perfecto y completo salvo el header que me daba error el la línea 42 (Strict standards: Only variables should be passed by reference). Lo solucioné quitando el "end" del explode.
    Muchas gracias por tu ejemplo.

    1. adrian leon dice:

      Gracias por el comentario , me saco del apuro

  22. Jose dice:

    Justo lo que estaba buscando.

  23. Carme dice:

    No funciona el enlace

    1. BaulPHP dice:

      Tienes que ser usuario registrado.

Deja una respuesta

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

Este sitio web protege su privacidad al adherirse al Reglamento General de Protección de Datos de la Unión Europea (GDPR). No utilizaremos sus datos para ningún propósito que no haya dado su consentimiento. Obtenga más información en nuestra página política de privacidad