lunes, 18 de junio de 2012

Login en Codeigniter

Actualmente Me encontraba Revisando unos Códigos de Desarrolloweb.com para Desarrollar un Login en este Framework pero se encontraba con Innumerables Errores por lo que opte por Adaptarlo un poco Dejo los códigos.



1° Primero que nada Crear un  Archivo control.php Guardarlo en /application/controllers/
Con el siguiente código


********************************************************************************

<?php

class control extends CI_Controller {
public function index(){
$this->config->set_item('language', 'spanish'); 
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
 {
  $this->form_validation->set_rules('maillogin','e-mail','required|valid_email'); 
       $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{
 
  $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
            }
 }

}

}
 function Registro(){
 $data['title'] = "Ingreso al Systema";
$this->load->view('registro', $data);
   }

}
?>

*********************************************************************************

2° Crear el archivo login.php y guardarlo en /application/views/

<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">

    <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Ingreso</title>
    </head>
  <body>
 <!-- <?php echo form_open('control/index/'); ?>   Se emplea para Indicarle con que controlador trabaje Primero-->
<form action="./?a=login" method="post">

<fieldset>
<legend> 
 </legend>
<table>
<tr><td>Email: </td><td><input type="text" name="maillogin" value="<?php set_value('maillogin'); ?>" size="25" /></td><td>   <?php echo form_error('maillogin');?></td></tr>
<tr><td>Password: </td><td><input type="password" name="passwordlogin" value="<?php set_value('passwordlogin'); ?>" size="25" /></td><td> <?php echo form_error('passwordlogin');?></td></tr>
<?php if(isset($error)){ echo "<p>".$error."</p>"; } ?>
<tr><td>

<tr><td></td><td><input type="submit" value="OK"/></td></tr>
</table>
</fieldset>
</form>
  <div class="registro"><a href="index.php/control/registro">Registro</a></div>
 
  </body>

</html>

*********************************************************************************
3° Crear usuarios_model.php y guardarlo en /application/models/

<?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)
   }
   
}
?>

4° Crear la Tabla de la base de datos
  Aka ojo tener primero configurado la database.php  en la /application/config  
algo  asi para el servidor o servidor local :p
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'codeigniter';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;


Bueno ahora la tabla. para la base de datos

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 , 'jorge@gmail.com', 'jorge123' );


Importante: pre-cargar librerías de CodeIgniter para base de datos y validaciones de formularios

Abrir el archivo autoload.php  ubicado en la ruta /application/config/" y localizar la siguiente línea:
$autoload['libraries']=array();

Reemplazarla por:

$autoload['libraries'] = array('database','form_validation');

Primeros Pasos en CodeIgniter

Blog dedicado al desarrollo de aplicaciones web en un framework llamado codeIgniter desde 0 para aprendizaje y ayuda personal o a la comunidad que se inicia en el Tema.