2010-01-25 27 views
5

Estoy construyendo un sitio básico CodeIgniter que requiere un inicio de sesión antes de poder acceder al sitio.CodeIgniter: ¿redirección dinámica posterior al inicio de sesión?

Si un usuario visita alguna URL del sitio, algo como esto:

http://www.mysite.com/project/detail/2049 

Y que estén al día cerrado la sesión, lo tengo listo para patear automáticamente de vuelta a la página de inicio de sesión.

Mi pregunta es, después de iniciar sesión, ¿cuál es la mejor manera de redirigirlos a la URL original que escribieron, en lugar de decir, redirigirlos a la página de inicio de sitios web?

Estaba pensando, quizás, crear dinámicamente la URL como un elemento de formulario oculto en el formulario de inicio de sesión y redirigir allí al iniciar sesión con éxito ... ¿Qué piensan ustedes? ¿Existe una mejor/mejor práctica para este tipo de redirección dinámica posterior al inicio de sesión?

Respuesta

16

Cuando chocan contra el registro de la página restringida la URI y configurarlo como datos de la sesión con

this->session->set_userdata('redirect', 'page/uri/here');

luego redirigirlos al conectar/registrarse

después se abren una sesión comprobar para ver si 'redirigir 'está presente con

if($this->session->userdata('redirect')) 
{ 
    redirect($this->session->userdata('redirect')); 
} 

si no luego tomar ellos dondequiera que usted toma normalmente después de un inicio de sesión

+0

brillante, gracias! –

0

cuando es interceptado intento de acceso:

redirect('/public/login/r'.$this->uri->uri_string()); 

por lo que en su caso, después de la redirección de la URL podría tener este aspecto:

http://www.example.com/public/login/r/project/detail/2049 

si el inicio de sesión tiene éxito

$uri = $this->uri->uri_string(); 
$redirect = substr($uri, strpos($uri, '/r/')+2); 
redirect($redirect); 

redirigirá al recurso original.

(y no, la 2 no debe ser +3)

0

¿Por qué no crear un valor de sesión al iniciar la sesión y luego verificar que en cada página sea necesario para asegurar?

construir en una biblioteca, por lo que se puede llamar al siguiente:

$this->mylibrary->login($user); 

y

$this->mylibrary->is_logged_in($user); en la parte superior de cada página y automáticamente redirigir los visitantes a su sitio principal.

+0

Creo que malinterpretaste la pregunta. –

0

Estoy usando flashdata para redirigir.

this->session->set_flashdata('redirect_url', 'page/uri/here'); 

después se inicia sesión compruebe si está presente 'REDIRECT_URL' con

if($this->session->flashdata('redirect_url')) 
{ 
    redirect(base_url().$this->session->flashdata('redirect_url'))); 
} 

Esperanza esta ayuda

Cuestiones relacionadas