Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/02/2013, 14:29
Avatar de aalleexx81
aalleexx81
 
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 0
Problema pantalla de login

Hola a tod@s.

Soy nuevo en el uso de este framework y estoy implementando una pantalla de login y no consigo que funcione.

Uso los siguientes ficheros:

controlador: login.php
Código PHP:
<?php

class Login extends CI_Controller
{
  
    public function 
__construct()
    {
        
parent:: __construct();
        
$this->load->model('login_model');
        
$this->load->helper('form');
        
$this->load->library('form_validation');
        
$this->load->library('session');
    }
   
    public function 
index()
    {
        echo 
'USERNAME = '.$_POST['username'].' ';
        echo 
'PASSWORD = '.$_POST['password'];
        
        if(!isset(
$_POST['username']))
        {
            
$this->load->view('login/index'); //si no recibimos datos por post, cargamos la vista del formulario
        
}
        else
        {
        
//definimos las reglas de validación
       
            
$this->form_validation->set_rules('username','Usuario','required|min_lenght[5]|max_lenght[20]');
            
$this->form_validation->set_rules('password','Password','required');
       
            if(
$this->form_validation->run() == FALSE//si no supera las reglas de validación se recarga la vista del formulario
            
{
                
$this->load->view('login/index');
            }
            else
            {
                   
$isValidLogin $this->login_model->getLogin($_POST['username'],$_POST['password']); //pasamos los valores al modelo para que compruebe si existe el usuario con ese password
           
                
if($isValidLogin)
                {
                
// si existe el usuario, registramos las variables de sesión y abrimos la página de exito
               
                    
$sesion_data = array(
                                    
'username' => $_POST['username'],
                                    
'password' => $_POST['password']
                                        );
                    
$this->session->set_userdata($sesion_data);
               
                    
$data['username'] = $this->session->userdata['username'];
                    
$data['password'] = $this->session->userdata['password'];
                   
                    
$this->load->view('login/login_success',$data);
                }
                else
                {
                
// si es erroneo, devolvemos un mensaje de error
                
$this->load->view('login/login_error');
                }
            }
       
       
        }
       
    }
    
    public function 
data()
    {
        if(
$this->session->userdata['username'] == TRUE)
        {
            echo 
$this->session->userdata['username'];
            echo 
"<br>";
            echo 
$this->session->userdata['password'];
        }
    }
    
    public function 
destroy()
    {
        
//destruimos la sesión
            
$this->login_model->close();
 
        echo 
"Sesión borrada"."<br>";
    }
    
    public function 
perfil()
    {
        
//pagina restringida a usuarios registrados.
        
$logged $this->login_model->isLogged();
       
        if(
$logged == TRUE)
        {
            echo 
"Tienes permiso para ver el contenido privado";
        }
        else
        {
            
//si no tiene permiso, abrimos el formulario para loguearse
               
$this->load->view('login/index');
        }
    }
}
?>
modelo: login_model.php
Código PHP:
<?php

    
class Login_model extends CI_Model
    
{
     
        public function 
__construct()
        {
            
$this->load->library('session');
            
$this->load->database();
        }
       
       
        public function 
getLogin($username,$password)
        {
            
//comprobamos que el nombre de usuario y contraseña coinciden
            
$data = array(
                
'username' => $username,
                
'password' => $password
            
);
       
            
$query $this->db->get_where('usuarios',$data);
            
            return 
$query->result_array();
        }
       
       
        public function 
isLogged()
        {
        
//Comprobamos si existe la variable de sesión username. En caso de no existir, le impediremos el paso a la página para usuarios registrados
       
            
if(isset($this->session->userdata['username']))
            {
                return 
TRUE;
            }
            else
            {
                return 
FALSE;
            }
           
        }
       
       
       
        public function 
close()
        {
            
//cerrar sesión
            
return $this->session->sess_destroy();
        }
    }
?>
vista index: index.php
Código PHP:
<?php echo validation_errors(); ?>
<? 
echo form_open('login/index');?>
<label>Usuario</label><br>
<input type="text" id="username" name="username"><br><br>
<label>Password</label><br>
<input type="password" id="password" name="password">
<br><br>
<input type="submit" value="Enviar">
<? echo form_close();?>
vista éxito: login_success.php
Código PHP:
<!DOCTYPE html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</
head>
     
<
body>
Logueado con éxito
</body>
</
html
vista error: login_error.php
Código PHP:
<!DOCTYPE html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</
head>
     
<
body>
Error en el inicio de sesión
</body>
</
html
El problema es que al visualizar el index me aparece los siguiente:


A PHP Error was encountered

Severity: Notice

Message: Undefined index: username

Filename: controllers/login.php

Line Number: 17
USERNAME =
A PHP Error was encountered

Severity: Notice

Message: Undefined index: password

Filename: controllers/login.php

Line Number: 18
PASSWORD =

y a continuación el formulario.

Los ficheros de las vistas están dentro de una carpeta llamada login y las rutas que he configurado en el fichero routes.php son las siguientes:

Código PHP:
//Rutas login
$route['login/login_error'] = 'login/login_error';
$route['login/login_success'] = 'login/login_success';
$route['login'] = 'login'

¿Alguién puede echarme una mano please?

Muchas gracias de antemano.

Un cordial saludo a tod@s.

Última edición por aalleexx81; 24/02/2013 a las 14:34