2012-08-30 14 views
5

He iniciar sesión controlador en mi aplicación CI:¿Cómo volver a la página de redireccionamiento después del inicio de sesión (codeigniter)?

function index() 
{ 
    if($this->session->userdata('logged_in')==TRUE) 
     redirect('/success'); 

    $data['error']=$this->session->flashdata('errormessage'); 
    $this->load->view('auth',$data); 
} 

function process_login() 
{ 

    $username=$this->input->post('username'); 
    $password=$this->input->post('password'); 

    if($password == "good_pwd") 
    { 
    $data=array('username'=>$username,'logged_in'=>TRUE); 
    $this->session->set_userdata($data); 
    redirect('/success'); 
    } 
    else 
    { 
     $this->session->set_flashdata('errormessage','Login failed'); 
     redirect('/failed'); 
    } 
} 

Ésta es mi constructor de asegurar en el controlador principal:

function __construct() 
{ 
    parent::__construct(); 
    if($this->session->userdata('logged_in')!=TRUE) redirect('/login'); 
} 

Cuando estoy tratando de entrar en www.mysite.com/main/function1/y no estoy conectado, el constructor me redirige a la página de inicio de sesión; cuando inicio sesión correctamente, me redireccionan a la página de inicio principal en lugar de la página que me redirigió a la página de inicio de sesión (en este caso de ejemplo: www.misitio.com). com/main/function1 /) - ¿cómo hacerlo?

+0

Posible duplicado para http://stackoverflow.com/questions/8625556/redirect-to-original-page-after-logging-in-codeigniter –

Respuesta

20

que había necesidad de almacenar la URI de la solicitud en una sesión para esto, para que pueda volver a la página anterior, algo a lo largo de las líneas de:

function __construct() 
{ 
    parent::__construct(); 
    if($this->session->userdata('logged_in')!=TRUE) { 
     $this->load->helper('url'); 
     $this->session->set_userdata('last_page', current_url()); 
     redirect('/login'); 
    } 
} 

... a continuación, puede utilizar los datos de la sesión para redirigir hacia atrás

+0

Puede ser mejor utilizar un parámetro GET para esto, ya que la sesión podría durar por un largo tiempo (ej. si el usuario decide no conectarse después de todo). –

+0

posiblemente, pero las sesiones en CodeIgniter 1. se borran automáticamente 2. se crean con parámetros en blanco incluso cuando el usuario solo ingresa a la página y no hace nada –

0

establecer la URL de redirección en el controlador de la

$redirect_to = "where you want to redirect after login"; 
$this->session->set_userdata('redirect_to',$redirect_to); 

uso algo como esto en el controlador del usuario

$redirect_to = $this->input->post('redirect_to') ? $this->input->post('redirect_to') : $this->session->userdata('redirect_to'); 

    $this->template->build('login', array(
       '_user' => $user, 
       'redirect_to' => $redirect_to, 
      )); 
Cuestiones relacionadas