work with doesn data base_url codeigniter redirect login

doesn - redirect codeigniter with parameters



codeigniter: cómo redirigir después de iniciar sesión en el controlador actual(php_self en php regular) (3)

Estoy seguro de que puede haber una manera mejor, pero la forma en que lo hago es cuando falla el control si el usuario está conectado. Uso $this->session->set_flashdata(''redirect_url'', current_url()); y luego páselo junto con el formulario de inicio de sesión para que sepa a quién redirigir al usuario de nuevo.

Como digo, estoy seguro de que hay una manera más clara de hacerlo, pero definitivamente no me gusta $_SERVER[''HTTP_REFERER'']; como realmente no se puede confiar.

Bueno, en realidad no es un problema, pero verifico si el usuario existe y lo conecto y redirecciona al sitio / members_area, pero no quiero enviar al usuario a una página específica, pero quiero volver a cargar el controlador actual. Entonces, si inicio sesión en index / home me gustaría ser redirigido a index / home, ¿cómo debo proceder?

en php regular pondría la acción para redirigir a la página actual

<?php echo $_SERVER[''PHP_SELF'']; ?>

Este es el código en el marco

function validate_credentials() { $this->load->model(''membership_model''); $query = $this->membership_model->validate(); if($query) // if the user''s credentials validated... { $data = array( ''username'' => $this->input->post(''username''), ''is_logged_in'' => true ); $this->session->set_userdata($data); redirect(''site/members_area''); //<-- this line here should be dynamic } else // incorrect username or password { $this->index(); } }


Puedes hacerlo así Recuerde cargar la biblioteca de sesión y url helper.

$this->session->set_flashdata(''redirectToCurrent'', current_url());

Pase los datos flash anteriores junto con el inicio de sesión y la redirección usando:

redirect($this->session->flashdata(''redirectToCurrent''));


Resolví este problema yo mismo al tener un formulario de inicio de sesión en el encabezado que siempre envía a un controlador de inicio de sesión, pero el problema es que el formulario de inicio de sesión del encabezado (que aparece en cada página) siempre tiene una entrada oculta llamada redirección que captura el controlador de inicio de sesión real ...

Aquí está la configuración básica (asegúrese de que el helper de url esté cargado):

El formulario de inicio de sesión del encabezado

<form action="/login" method="post"> <input type="hidden" name="redirect" value="<?php echo current_url(); ?>" /> <input type="text" name="username" value="" /> <input type="password" name="password" value="" /> <input type="submit" name="login" value="Login" id="submit"> </form>

El formulario de controlador de inicio de sesión

<form id="login" action="" method="post"> <input type="text" name="username" id="username" value="" /> <input type="password" name="password" id="password" value=""/> <?php if(isset($_POST[''redirect''])) : ?> <input type="hidden" name="redirect" value="<?php echo $_POST[''redirect'']; ?>" /> <?php endif; ?> <input type="submit" name="login" id="submit" value="Login" /> </form>

La mejor parte es que sigas configurando el redireccionamiento en caso de error y la entrada de redireccionamiento solo se establece si estás iniciando sesión desde otro lugar.

El controlador

function index() { if( ! $this->form_validation->run()) { // do your error handling thing } else { // log the user in, then redirect accordingly $this->_redirect(); } } function _redirect() { // Is there a redirect to handle? if( ! isset($_POST[''redirect''])) { redirect("site/members_area", "location"); return; } // Basic check to make sure we aren''t redirecting to the login page // current_url would be your login controller if($_POST[''redirect''] === current_url()) { redirect("site/members_area", "location"); return; } redirect($_POST[''redirect''], "location"); }

Lo que está sucediendo aquí es esto:

  1. El usuario inicia sesión en una página diferente.
  2. El formulario de inicio de sesión se envía a un único controlador de inicio de sesión con un elemento de entrada oculto que indica de dónde están iniciando sesión.
  3. El controlador de inicio de sesión procesa el inicio de sesión, luego redirige en función de la entrada.
  4. En el inicio de sesión fallido, la redirección sigue configurándose nuevamente, por lo que pase lo que pase, el usuario volverá a la página original.

Eso es solo un ejemplo básico. Obviamente puedes modificarlo según sea necesario.