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.
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
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'); } ?>
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
Descargar login seguro PHP con MySQLi
Referencia
No quiere realizar el registro me puede ayudar
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
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’;
}
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.
No funciona el login… Cuando entro lo primero que me dice que hay un error en la linea 10… ¿A que se puede dever?
hola yo del pasado se resuelve cambiando la ruta en la cual esta el login puedes ser dominio.com/login o localhost/login
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
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.
el precio de los 156 programas es en dolares???
Hola Pablo,
Si, es en dolares
Hola disculpa sabes que me tira error en la linea 7 cuando quiero recuperar la contraseña
Hola walter
Tienes que probarlo con un servidor de producción con un correo corporativo para que envie los correos.
Saludos
Super bien, me funcionó perfecto, gracias!!! 😀
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
amigo estoy igual ayudame porfavor me dice que inserte email valido
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?
Hola emiliano.
Tienes que editar los estilos CSS y manejar la altura del contenedor.
Con eso podras agregar las imagenes que desees.
amigo trato de registrar un usuario y me dice inserte un email valido sabes que es tengo php 7.0 mi numero 57 3044980985
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
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.
Disculpe, no logro guardar ningun usuario, no muestra ningun mensaje ni de error ni de exito.
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
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.
yo sigo teniendo problemas ayudame
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.
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
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.
Hola Joel
Primeramente agradecerte por tu comentario, efectivamente ya lo he revisado y se ha corregido ese inconveniente.
Un saludo a la distancia.
Buenos dias muchas gracias excelente aporte, justo lo que necesitaba
Excelente
Buen dia Marco
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
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
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.
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.
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.
Mi corre0 es nestor@www.baulphp.com
hola!! gracias por compartir, con que usuario me logueo. gracias
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.
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.
Gracias por el comentario , me saco del apuro
Justo lo que estaba buscando.
No funciona el enlace
Tienes que ser usuario registrado.