Foros del Web » Programando para Internet » PHP » CodeIgniter »

[SOLUCIONADO] problema con sesiones

Estas en el tema de problema con sesiones en el foro de CodeIgniter en Foros del Web. 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 ( ...
  #1 (permalink)  
Antiguo 02/09/2013, 10:28
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 10 años, 11 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
  #2 (permalink)  
Antiguo 08/09/2013, 15:18
Avatar de efenollal  
Fecha de Ingreso: abril-2012
Ubicación: Toa Baja
Mensajes: 63
Antigüedad: 12 años
Puntos: 3
Respuesta: problema con sesiones

en el controlador de tu pagina index debes confirmas primero si existe una sesion y si es igual a la sesion en el cache. Si no haces un redirect al login. o incluso puedes hacer un helper que llamas al en el config o en cada controlador para que haga la verificacion al entrar en la aplicacion.
  #3 (permalink)  
Antiguo 10/09/2013, 10:23
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: problema con sesiones

gracias por tu ayuda, de verdad me sirvio esa idea

Etiquetas: ayuda!!, login
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:26.