2012-08-30 22 views
5

Ho login controller nella mia CI app:Come tornare alla pagina di reindirizzamento dopo l'accesso (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'); 
    } 
} 

Quello è il mio costruttore di fissaggio in controller principale:

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

Quando sto cercando di entrare in www.mysite.com/main/function1/e non ho effettuato l'accesso, quindi il costruttore mi reindirizza nella pagina di accesso - quando accedo correttamente mi sto reindirizzando alla home page principale anziché alla pagina che mi ha reindirizzato nella pagina di accesso (in questo esempio: www.mysite. com/main/function1 /) - come si fa?

+0

Possibile duplicato per http://stackoverflow.com/questions/8625556/redirect-to-original-page-after-logging-in-codeigniter –

risposta

20

avresti bisogno di memorizzare la vostra richiesta URI in una sessione per questo, in modo da poter tornare alla pagina precedente, qualcosa sulla falsariga di:

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'); 
    } 
} 

... è possibile utilizzare i dati di sessione per reindirizzare indietro

+0

Potrebbe essere meglio utilizzare un parametro GET per questo, poiché la sessione potrebbe durare a lungo (es. se l'utente decide di non connettersi dopo tutto). –

+0

possibilmente, ma le sessioni in CodeIgniter sono 1. cancellate automaticamente 2. create con parametri vuoti anche quando l'utente accede alla pagina e non fa nulla –

0

impostare l'URL di reindirizzamento nel controller del

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

usare qualche cosa come questa nel controller utente

Problemi correlati