Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/09/2013, 10:28
rober18
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta problema con sesiones

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->userredirect ('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&oacute;n</h1>

<?php if(@$error_login): ?>
	Error en el usuario o contrase&ntilde;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