buenos dias a todos, tengo en codeigniter un sistema de logueo de sesiones, en el controlador tengo lo siguiente:
Código PHP:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends Private_Controller{
public function index()
{
/*
Si no esta logueado lo redirigmos al formulario de login.
*/
if(!@$this->user) redirect ('welcome/login');
$this->load->view('indexo');
}
public function login() {
$data = array();
// Añadimos las reglas necesarias.
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
// Generamos el mensaje de error personalizado para la accion 'required'
$this->form_validation->set_message('required', 'El campo %s es requerido.');
// Si no esta vacio $_POST
if(!empty($_POST)) {
// Si las reglas se cumplen, entramos a la condicion.
if ($this->form_validation->run() == TRUE) {
// Obtenemos la informacion del usuario desde el modelo users.
$logged_user = $this->users->get($_POST['username'], $_POST['password']);
// Si existe el usuario creamos la sesion y redirigimos al index.
if($logged_user) {
$this->session->set_userdata('logged_user', $logged_user);
redirect('welcome/index');
echo $_POST['username'];
} else {
// De lo contrario se activa el error_login.
$data['error_login'] = TRUE;
}
}
}
$this->load->view('login_vista', $data);
}
public function logout() {
$this->session->unset_userdata('logged_user');
redirect('welcome/login');
}
}
en el modelo tengo lo siguiente
Código PHP:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Users extends CI_Model {
protected $table;
protected $id;
/*
Constructor del modelo, aqui establecemos
que tabla utilizamos y cual es su llave primaria.
*/
function __construct() {
parent::__construct();
$this->table = 'users';
$this->id = 'id';
}
/*
Con esta funcion comprobamos que exista el
usuario en la base de datos, si es asi retornamos
el contenido del registro, de lo contrario se
retorna FALSE.
*/
function get($username='', $password='') {
return $this->db->get_where(
$this->table, array(
'username' => $username,
'password' => $password
)
)->row();
}
}
y en la vista lo siguiente
Código HTML:
<h1>Inicia sesión</h1>
<?php if(@$error_login): ?>
Error en el usuario o contraseña.
<br />
<?php endif; ?>
<?php echo @validation_errors(); ?>
<head>
<!-- Basics -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Login</title>
<!-- CSS -->
<link rel="stylesheet" type= "text/css" href="<?php echo base_url();?>css/style.css">
<link rel="stylesheet" type= "text/css" href="<?php echo base_url();?>css/animate.css">
<link rel="stylesheet" type= "text/css" href="<?php echo base_url();?>css/reset.css">
<link rel="stylesheet" type= "text/css" href="<?php echo base_url();?>css/styles.css">
</head>
<!-- Main HTML -->
<body id="font">
<!-- Begin Page Content -->
<div id="container">
<form method="post">
<label for="name">Usuario:</label>
<input type="name" name="username" value="<?php echo @$_POST['username']; ?>">
<label for="username">Contraseña:</label>
<input type="password" name="password" value="<?php echo @$_POST['password']; ?>">
<div id="lower">
<input type="checkbox"><label class="check" for="checkbox">No cerrar sesion</label>
<input type="submit" value="ingresar">
</div>
</form>
</div>
<!-- End Page Content -->
</body>
el sistema permite logear y cerrar sesion muy bien, pero el problema es el siguiente: digamos que abro mi sesion y estoy dentro de la aplicacion el cual tendria esta url :
http://localhost/facturas/index.php/...administracion
entonces, si yo copio esta url y cierro mi sesion (y ya no la vuelvo a abrir), vuelve al formulario de login, pero al pegar la url en el navegador y ejecutarla, se supone que no deberia abrir la aplicacion, debido a que cerre la sesion, pero aun asi, la aplicacion se abre, aunque no he iniciado sesion se abre la aplicacion, eso indica que hay un error en el sistema de login
por favor se los pido de la manera mas encarecida que me ayuden, me estoy volviendo loco con este problema no encuentro ninguna solucion posible.
desde ya muchas, pero muchas gracias