- Paso 1: crear el archivo php.php y guardarlo en /application/controllers/
- Paso 2: crear el archivo login.php y guardarlo en /application/views/
- Paso 3: crear usuarios_model.php y guardarlo en /application/models/
- Paso 4: crear la tabla mysql con algunos usuarios de prueba
Ver la demo: http://blogdephp.com/script/php/login/
Paso 1: Código para el controlador "php.php":
Código PHP:
<?
class Php extends CI_Controller {
function login()
{
$this->load->helper('form');
if(!isset($_POST['maillogin'])){ // Si no recibimos ningún valor proveniente del formulario, significa que el usuario recién ingresa.
$this->load->view('login'); // Por lo tanto le presentamos la pantalla del formulario de ingreso.
}
else{ // Si el usuario ya pasó por la pantalla inicial y presionó el botón "Ingresar"
$this->form_validation->set_rules('maillogin','e-mail','required|valid_email'); // Configuramos las validaciones ayudandonos con la librería form_validation del Framework Codeigniter
$this->form_validation->set_rules('passwordlogin','password','required');
if(($this->form_validation->run()==FALSE)){ // Verificamos si el usuario superó la validación
$this->load->view('login'); // En caso que no, volvemos a presentar la pantalla de login
}
else{ // Si ambos campos fueron correctamente rellanados por el usuario,
$this->load->model('usuarios_model');
$ExisteUsuarioyPassoword=$this->usuarios_model->ValidarUsuario($_POST['maillogin'],$_POST['passwordlogin']); // comprobamos que el usuario exista en la base de datos y la password ingresada sea correcta
if($ExisteUsuarioyPassoword){ // La variable $ExisteUsuarioyPassoword recibe valor TRUE si el usuario existe y FALSE en caso que no. Este valor lo determina el modelo.
echo "Validacion Ok<br><br><a href=''>Volver</a>"; // Si el usuario ingresó datos de acceso válido, imprimos un mensaje de validación exitosa en pantalla
}
else{ // Si no logró validar
$data['error']="E-mail o password incorrecta, por favor vuelva a intentar";
$this->load->view('login',$data); // Lo regresamos a la pantalla de login y pasamos como parámetro el mensaje de error a presentar en pantalla
}
}
}
}
}
?>
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Blogdephp.com, ¿cómo hacer un login de usuarios en php? Ver script y demo!</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="http://www.blogdephp.com/script/php-login.css" type="text/css" media="screen">
<!--<link rel="stylesheet" href="../../php-login.css" type="text/css" media="screen">-->
</head>
<body style="margin-top:0px">
<?php echo form_open('php/login'); ?>
<div class="Info">
<p class="Titulo">Demo: ¿cómo hacer un login de usuarios en php?</p>
<p> </p>
</div>
<div id="LoginUsuarios">
<div class="fila">
<div class="LoginUsuariosCabecera">E-mail:</div>
<div class="LoginUsuariosDato"><input type="text" name="maillogin" value="<?= set_value('maillogin'); ?>" size="25" /></div>
<div class="LoginUsuariosError">
<?
if(isset($error)){
echo "<p>".$error."</p>";
}
echo form_error('maillogin');
?>
</div>
</div>
<div class="fila">
<div class="LoginUsuariosCabecera">Contraseña:</div>
<div class="LoginUsuariosDato"><input type="password" name="passwordlogin" value="<?= set_value('passwordlogin'); ?>" size="25" /></div>
<div class="LoginUsuariosError"><?= form_error('passwordlogin');?></div>
</div>
<div class="fila">
<div class="LoginUsuariosCabecera"></div>
<div class="LoginUsuariosDato"></div>
</div>
<div class="fila">
<div class="LoginUsuariosCabecera"><input type="submit" value="Ingresar"></div>
<div class="LoginUsuariosDato"></div>
</div>
</div>
<p> </p>
<p> </p>
</form>
<div class="Info">
<p><strong><u>Datos de acceso</u></strong> (correspondiente a un usuario ya ingresado en la base de datos)</p>
<p><strong>e-mail</strong>: [email protected]</p>
<p><strong>password</strong>: blogdephp</strong></p>
</div>
<p> </p>
<p> </p>
<div class="Info">
<p><strong><u>Requerimientos</u></strong></p>
<p>Para poder implementar este script de login, se requiere el framework de php "Codeigniter"</p>
<p>(esta maravillosa herramienta nos ayuda a ahorrar mucho tiempo y esfuerzo en nuestros trabajos de programación php).</p>
<p> </p>
</div>
<div class="Info">
</div>
</body>
</html>
Código PHP:
<?php
class Usuarios_model extends CI_Model{
function ValidarUsuario($email,$password){ // Consulta Mysql para buscar en la tabla Usuario aquellos usuarios que coincidan con el mail y password ingresados en pantalla de login
$query = $this->db->where('Usuario',$email); // La consulta se efectúa mediante Active Record. Una manera alternativa, y en lenguaje más sencillo, de generar las consultas Sql.
$query = $this->db->where('Password',$password);
$query = $this->db->get('Usuarios');
return $query->row(); // Devolvemos al controlador la fila que coincide con la búsqueda. (FALSE en caso que no existir coincidencias)
}
}
?>
Código PHP:
CREATE TABLE `Usuarios` (
`Id` INT NOT NULL AUTO_INCREMENT ,
`Usuario` VARCHAR( 50 ) NOT NULL ,
`Password` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `Id` )
) ENGINE = MYISAM ;
INSERT INTO `Usuarios` (
`Id` ,
`Usuario` ,
`Password`
)
VALUES (
NULL , '[email protected]', 'blogdephp'
);
- Permitir acceso a determinada información y utilidades únicamente a determinados usuarios (aquellos que se encuentren registrados en una tabla de base de datos Mysql)
- Mensaje de error cuando falta rellenar algún campo de la pantalla de acceso
- Mensaje de error cuando los datos ingresados no coinciden con ningún usuario registrado en la base de datos.
- Recordar los datos previamente ingresados por el usuario cuando éste no supera el login y tenemos que volver a presentarle la pantalla de acceso.
Explicación técnica
Como pueden observar, los códigos del script se encuentran con comentarios. Cada sentencia importante tiene su explicación de que función cumple. Lo que intentaremos ahora es hacer una explicación general de cómo funciona el script; como si fuera un cuento...
Comencemos con la pantalla de acceso "login.php", donde el usuario podrá ingresar sus datos (usuario y password). Recordemos que todo lo que sea interacción con el usuario (entrada y salida de datos) lo trabajamos con las vistas (capa presentación).
Lo importante aquí es la sentencia
Código PHP:
<?php echo form_open('php/login'); ?>
Otro punto importante de la vista es cuando creamos los campos (serían las cajas de texto donde el usuario podrá ingresar los datos):
Código PHP:
<input type="text" name="maillogin" value="<?= set_value('maillogin'); ?>" size="25" /></div>
Luego pasemos al controlador "php.php". Esta es la parte más compleja del script, por tal motivo intenté poner comentarios a cada una de las y facilitar así su comprensión. Te recomiendo leer los comentarios directo en el código.
El controlador (php.php) hace lo que hace es tomar los datos provenientes del formulario, hacer las validaciones, consultar al modelo (usuarios_model.php) si el usuario existe en la base de datos y su password es válida. Por último, decide si el usuario corresponde que pueda acceder, o no, y comunica su decisión a la vista (login.php) para que el usuario vea la respuesta en su pantalla.
Me interesa remarcar aquí algunas sentencias y declaraciones puntuales que son muy básicas de php y te servirán en todo sistema web que desarrolles.
Código PHP:
$_POST['maillogin']
Código PHP:
$this->load->model('usuarios_model'); (sirve para cargar el modelo usuarios_model y poder utilizar sus recursos) this->usuarios_model->ValidarUsuario($_POST['maillogin'],$_POST['passwordlogin']);
Espero que lo disfruten. La idea es agregarle funcionalidades al script en futuros aportes.
Por favor, envíen sus consultas y dudas a través de los comentarios y lo revisamos juntos
Saludos!