2012-07-07 22 views
12

En el sistema de mensajería de mi proyecto cuando recibes un mensaje de un usuario recibes una alerta por correo electrónico diciendo que el otro usuario ha enviado un mensaje para ver el mensaje, haga clic aquí (es decir, la url del mensaje) si el usuario no está conectado al sistema, se lo redirecciona a la página de inicio de sesión y luego de iniciar sesión debe volver a la URL del referer. He creado un controlador base en la carpeta del núcleo y extendiendo el CI_controller el código de autenticación es el siguiente.Redirigir a la URL del refere en codeigniter

function authenticate($type = 'user') 
    { 
     if($type == 'user') 
     { 
      if($this->user_id) 
      { 
       // user is logged in. check for permissions now 
      } 
      else 
      { 
       // user isnt logged in. store the referrer URL in a var. 
       if(isset($_SERVER['HTTP_REFERER'])) 
       { 
        $redirect_to = str_replace(base_url(),'',$_SERVER['HTTP_REFERER']); 
       } 
       else 
       { 
        $redirect_to = $this->uri->uri_string(); 
       }    

       redirect('user/login?redirect='.$redirect_to); 
       exit; 
      } 
     } 

     if($type == 'admin') 
     { 
      if($this->session->userdata('admin_id') && $this->session->userdata('user_type') ==5) 
      { 
       // Admin is logged in 
      } 
      else 
      { 
       redirect('admin/login'); 
       exit; 
      } 
     } 
    } 

La url árbitro es "http://example.com/project/pm/view_conversation?id=11" ahora el problema es que estoy recibiendo árbitro url hasta view_conversation y no es capaz de conseguir la parte ID .

¿Alguna sugerencia?

Gracias.

Respuesta

2

Debido a que tiene doble interrogación en la url, el navegador ignora la parte de la url después de la segunda. urlencode utilizar para redirigir parte, así:

redirect('user/login?redirect='.urlencode($redirect_to)); 

Lo he probado y funciona de esta manera.

15

¿Qué tal

redirect($_SERVER['HTTP_REFERER']); 

Usando $_SERVER variable global de php.

¡Esto funcionó para mí!

1

poner ese código en su Controler de sesión

function index() { 
    $this->load->library('user_agent'); // load user agent library 

    //Set session for the referrer url 
    $this->session->set_userdata('referrer_url', $this->agent->referrer()); 
} 

Después código de la conexión redirección

// user is authenticated if referrer is there 
if($this->session->userdata('referrer_url')) { 
    //Store in a variable so that can unset the session 
    $redirect_back = $this->session->userdata('referrer_url'); 
    $this->session->unset_userdata('referrer_url'); 
    redirect($redirect_back); 
} 
Cuestiones relacionadas