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');
        }
    }
}
?>    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();
        }
    }
?>    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();?>    Código PHP:
   <!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
     
<body>
Logueado con éxito
</body>
</html> 
    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> 
    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.
 
 


 Respuesta: Problema pantalla de login
 Respuesta: Problema pantalla de login  
 

